Описываю класс - обработчик ошибок. Некоторые его методы:
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, не ловятся моим обработчиком. В чем проблема?
заглядывайте в документацию хоть иногда
Ошибки следующих типов не могут быть обработаны пользователем:
E_ERROR
, E_PARSE
, E_CORE_ERROR
, E_CORE_WARNING
, E_COMPILE_ERROR
,
E_COMPILE_WARNING
, и большинство E_STRICT
ошибок, произошедших в
файле, где вызвана функция set_error_handler()
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Какие могут быть подводные камни при создании сайта на jquery без перезагрузки страницыМенять url через js и контент через json на php
Есть база и скрипт для поиска по БД созданной в phpMyAdminПоиск не реботает
1) способ: Как сделать всё одним регулярным выражением, а не создавать кучу переменных?