PHP 7 - обработка ошибок

221
27 октября 2017, 14:16

Описываю класс - обработчик ошибок. Некоторые его методы:

public function __construct()
{
    if (DEBUG) {
        error_reporting(-1);
        ini_set('display_errors', true);
    } else {
        error_reporting(0);
        ini_set('display_errors', false);
    }
    set_error_handler([$this, 'errorHandler']);
    set_exception_handler([$this, 'exceptionHandler']);
    register_shutdown_function([$this, 'fatalErrorHandler']);
}
public function errorHandler($code, $message, $file, $line)
{
    echo '<br />' . __METHOD__ . '<br />';
    // some code
    die;
}
public function fatalErrorHandler()
{
    echo '<br />' . __METHOD__ . '<br />';
    // some code
    die;
}
public function exceptionHandler(\Throwable $e)
{
    echo '<br />' . __METHOD__ . '<br />';
    // some code
    die;
}

Логика такая: вначале работы приложения создается экземпляр этого объекта и сохраняется в статическом свойстве главного объекта приложения, который живет всё время. Как видно, обработчики ошибок и исключения инициализируются в конструкторе объекта.

Проблема в следующем: фатальные ошибки, например Parse error, не ловятся моим обработчиком. В чем проблема?

Answer 1

заглядывайте в документацию хоть иногда

Ошибки следующих типов не могут быть обработаны пользователем: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, и большинство E_STRICT ошибок, произошедших в файле, где вызвана функция set_error_handler().

READ ALSO
Весь сайт без перезагрузки на jquery

Весь сайт без перезагрузки на jquery

Какие могут быть подводные камни при создании сайта на jquery без перезагрузки страницыМенять url через js и контент через json на php

268
Не работает поиск по БД MySQL

Не работает поиск по БД MySQL

Есть база и скрипт для поиска по БД созданной в phpMyAdminПоиск не реботает

372
Создание своих BB кодов

Создание своих BB кодов

1) способ: Как сделать всё одним регулярным выражением, а не создавать кучу переменных?

214
Извлечь фрагмент из строки

Извлечь фрагмент из строки

Здравствуйте, есть такие строки такого формата;

202