set_exception_handler

(PHP 5, PHP 7)

set_exception_handler Задает пользовательский обработчик исключений

Описание

callable set_exception_handler ( callable $exception_handler )

Задает обработчик по умолчанию для случаев, когда исключение выброшено вне блока try/catch. После вызова exception_handler выполнение будет остановлено.

Список параметров

exception_handler

Имя функции, которая будет вызываться каждый раз, когда выбрасывается неперехватываемое исключение. Функция-обработчик должна принимать один аргумент - объект, представляющий выброшенное исключение. До PHP 7 такая функция выглядит так:

void handler ( Exception $ex )

В PHP 7 большинство внутренних ошибок теперь генерируют исключение, но класса Error. Для них так же будет вызываться указанный обработчик исключений. Классы Error и Exception реализуют интерфейс Throwable, соответственно именно его следует использовать в сигнатуре функции-обработчика:

void handler ( Throwable $ex )

В качестве этого аргумента можно передать 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";
?>

Смотрите также