powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Почему отображается сообщение об ошибке?
6 сообщений из 6, страница 1 из 1
Почему отображается сообщение об ошибке?
    #38837272
rnwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть такой код (не весь, фрагмент), надстройка на phpbb3:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
function read_replscript($script_name)
{
$handle = fopen($script_name, "r");
$sql =fread ($handle, filesize ($script_name));
fclose($handle);
return $sql;
}


function exec_script($db, $sql)
{
   try 
   { 
     $db->sql_query($sql);
   } 
   catch (Exception $e) 
   { 
      throw $e; 
   } 
}

....

	print("Connect Ok!<br>");

//Бежим по папкам


    	while ($row = $db->sql_fetchrow($result))
 	{
		$client_id=$row['client_id'];
		$client_path=$phpbb_root_path . "rpl/" . $client_id . "/";             

		$server_counter=$row['counter'];
		$client_counter=get_client_counter($client_path . "counter.txt");
	print('$client_counter' . $client_counter . '<br>'); 
		
		$server_counter++;
             
		for ($i=$server_counter; $i<=$client_counter;$i++)
		{
		
		print("выполнить скрипт " .$i. ".sql <br>");
        	      $script_name=$client_path ."in/". $i . ".sql";
		print($script_name . "<br>");

		       try 
			{ 
			$sl=read_replscript($script_name);
			exec_script($db, $sl);
		print ('exec script done! <br>');            
			} 

			catch (Exception $e) 
			{ 
		print("Erroren!" . $e->errorMessage() . "<br>"); 
			} 

		} //for




	print($row['client_name']. "<br>");
	print($client_path . "<br>");

	} //while

....



Вопрос в том, почему вываливается ошибка как на картинке и все стопорится, а не срабатывает try .. catch.
Идея в том, что если произошла sql ошибка залогировать ее в catch, что-нибудь еще сделать, но не таким образом вырубать выполнение.
...
Рейтинг: 0 / 0
Почему отображается сообщение об ошибке?
    #38837439
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnwl,

ваши слова...залогировать, обработать итд..
а по вашему, какой код должен был сработать чтобы сделать вышеописанное?? конкретно сточку кода в вашем посте покажите, какая должна была логировать или чтото ещо.
...
Рейтинг: 0 / 0
Почему отображается сообщение об ошибке?
    #38837448
rnwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453, ожидалось увидеть надпись на экране

catch (Exception $e)
{
print("Erroren!" . $e->errorMessage() . "<br>");
}
...
Рейтинг: 0 / 0
Почему отображается сообщение об ошибке?
    #38837746
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это всего лишь означает, что класс, который вы используете для работы с БД самостоятельно обрабатывает SQL исключения и не выпускает их наружу.

То есть в вашем случае нарушение уникальности PRIMARY ключа на таблице привело к данному сообщению и завершению работы скрипта.
До вашего кода даже не дошло.
...
Рейтинг: 0 / 0
Почему отображается сообщение об ошибке?
    #38837806
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mwl,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function exec_script($db, $sql)
{
   try 
   { 
     $db->sql_query($sql);
   } 
   catch (Exception $e) 
   { 
      throw $e; 
   } 
}


В точности делает то же самое, что и
Код: php
1.
2.
3.
4.
function exec_script($db, $sql)
{
     $db->sql_query($sql);
}



И самое главное... а что есть $db? Вполне вероятно, что он первым перехватил исключение, обработал его... и бросил die или exit напоследок например.
...
Рейтинг: 0 / 0
Почему отображается сообщение об ошибке?
    #38837958
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rnwlalex564657498765453, ожидалось увидеть надпись на экране

catch (Exception $e)
{
print("Erroren!" . $e->errorMessage() . "<br>");
}

мдя...я предполагал что мой вопрос заставит задуматься, но он таки заставил - только не автора а коментатора.

а задуматься вод над чем надо было.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 try 
			{ 
			$sl=read_replscript($script_name);
			exec_script($db, $sl);
		print ('exec script done! <br>');              //!!! -#1
			} 

			catch (Exception $e) 
			{ 
		print("Erroren!" . $e->errorMessage() . "<br>"); //!!! -#2
			} 
print($row['client_name']. "<br>");//!!! -#3
	print($client_path . "<br>");//!!! -#4



если возникнет исключение (выбороситься) то вместо строки 1 мы увидим строку 2
но в любом случае мы увидим 3 и 4, если вообще этот участок кода работает.
но как мы видим по выводу, 3 4 которые должны были быть в любом случае, не выполнилися, а перед ними команды эксит нету. а скрипт таки завершил свою работу...

ну это то что и написал коментатор - в другом месте идёт перехват исключения, и завершение работы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Почему отображается сообщение об ошибке?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]