Задать вопрос
Ridzhi
@Ridzhi
На вершине пищевой цепочки

Как перевести fatal error в ErrorException?

Есть index.php, там код
ini_set('display_errors', 1);
ini_set('error_reporting', ~0);

$notFatal = E_USER_ERROR | E_RECOVERABLE_ERROR | E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_STRICT | E_DEPRECATED | E_USER_DEPRECATED;

set_error_handler('errorHandler', $notFatal);
register_shutdown_function('fatalErrorHandler');


function errorHandler($errno, $errstr, $errfile, $errline)
{
    throw new ErrorException($errstr);
}

function fatalErrorHandler()
{
    if ($error = error_get_last() AND $error['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING)) {
        ob_end_clean();
        errorHandler($error['type'], $error['message'], $error['file'], $error['line']);
    } else {
        ob_end_flush();
    }
}


try {
    require 'some_not_existing_file.php';
} catch (ErrorException $e) {
    echo $e->getMessage();
}


Результат выполнения предельно непонятный:
581badcdf8dd454da3f742d438575548.png

Если закомментить require 'some_not_existing_file.php';
И написать throw new ErrorException('Im work');
то все ок. Что у я упустил ?
  • Вопрос задан
  • 323 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Ответ написан
Комментировать
Ridzhi
@Ridzhi Автор вопроса
На вершине пищевой цепочки
Кажется догнал, есть вероятность, что так как в случае фатала работа скрипта прекращается , то и до catch мы уже не доходим.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект