set_exception_handler
(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";
?>
Смотрите также
- restore_exception_handler() - Восстанавливает предыдущий обработчик исключений
- restore_error_handler() - Восстанавливает предыдущий обработчик ошибок
- error_reporting() - Задает, какие ошибки PHP попадут в отчет
- Исключения PHP 5