(PHP 5, PHP 7)
set_exception_handler — Задает пользовательский обработчик исключений
Задает обработчик по умолчанию для случаев, когда исключение выброшено
вне блока try/catch. После вызова exception_handler
выполнение будет остановлено.
exception_handlerИмя функции, которая будет вызываться каждый раз, когда выбрасывается неперехватываемое исключение. Функция-обработчик должна принимать один аргумент - объект, представляющий выброшенное исключение. До PHP 7 такая функция выглядит так:
В PHP 7 большинство внутренних ошибок теперь генерируют исключение, но класса Error. Для них так же будет вызываться указанный обработчик исключений. Классы Error и Exception реализуют интерфейс Throwable, соответственно именно его следует использовать в сигнатуре функции-обработчика:
В качестве этого аргумента можно передать NULL. В этом случае
обработчик вернется к своему изначальному состоянию.
Указание типа Exception для параметра
ex в вашей функции-обработчике приведет
к проблемам в PHP 7 из-за измененной иерархии классов исключений.
Возвращает имя предыдущего заданного обработчика или NULL в случае
ошибки. Если предыдущих обработчиков определено не было, то также
возвращается NULL.
| Версия | Описание |
|---|---|
| 7.0.0 |
Тип параметра передаваемого в exception_handler изменен
с Exception на Throwable
|
| 5.5.0 |
Раньше, если был передан NULL, то эта функция возвращала TRUE.
Теперь она возвращает старый обработчик.
|
Пример #1 Пример использования set_exception_handler()
<?php
function exception_handler($exception) {
echo "Неперехваченное исключение: " , $exception->getMessage(), "\n";
}
set_exception_handler('exception_handler');
throw new Exception('Неперехваченное исключение');
echo "Не выполнено\n";
?>