(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";
?>