@Pyhon3x

В чем проблема Catch блока?

Код:
<?php
//Require-скрипты
  echo "<h1 align='center'>Импортирую скрипты</h1>";
  time_nanosleep(1, 100000);
  try {
    require 'connect.php';
    require 'Log_Sy.php';
  } catch (Exception $e) {
    echo "<h1 align='center'>Импортирую скрипты: Ошибка, Поднимаю исключение</h1>";
    time_nanosleep(1, 100000);
    Logs::Log_Error_AUTH("<a href='http://test-server.tsecret.net/AUTH-2/Register.php'>http://test-server.tsecret.net/AUTH-2/Register.php</a>", "Импорт скриптов: поднято исключение '".$e->getMessage()."'", NULL, NULL, NULL, NULL);
    echo "<h1 align='center'>Импортирую скрипты: Уведомил администраторов, Спасибо!</h1>";
  }
?>


Почему блок Catch не выполняется?
Здесь(require 'Log_Sy.php';) ошибка сделана преднамеренно!
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@dzhebrak
Функция require выдает ошибку, а не бросает исключение, поэтому обрабатывать ее нужно с помощью функций set_error_handler и register_shutdown_function

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
	print "<pre>"; print_r($errstr); print "</pre>";
}

function myShutdownHandler()
{
	print "<pre>"; print_r(error_get_last()); print "</pre>";

}

set_error_handler('myErrorHandler');
register_shutdown_function('myShutdownHandler');

//Require-скрипты

Лучше проверять, есть ли файл, который хотите подключить (с помощью file_exists()) и после этого уже подключать его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы