Класс ErrorHandler
Обработчик ошибок предоставляет базовые обработку ошибок и исключений для вашего приложения. Он перехватывает и обрабатывает все необработанные исключения и ошибки. Отображает полезные ошибки фреймворка, когда debug > 1.
Неперехваченные исключения
Когда debug < 1, CakeException отобразит ошибки 404 или 500. Если возникает неперехваченное исключение, и это тип, о котором ErrorHandler не знает, оно будет обработано как ошибка 500.
Реализация обработки исключений, специфичных для приложения
Вы можете реализовать обработку исключений, специфичных для приложения, несколькими способами. Каждый подход предоставляет различный уровень контроля над процессом обработки исключений.
- Измените config/error.php и настройте пользовательскую обработку исключений.
- Используйте опцию
exceptionRendererдля вставки рендерера исключений. Это позволит вам сохранить существующую логику обработки, но переопределить логику рендеринга.
Создание собственного обработчика исключений
Это предоставляет полный контроль над процессом обработки исключений. Выбранный класс должен быть загружен в вашем файле config/error.php и зарегистрирован как обработчик исключений по умолчанию.
Использование пользовательского рендерера с exceptionRenderer
Если вы не хотите контролировать обработку исключений, но хотите изменить способ отображения исключений, вы можете использовать опцию exceptionRenderer для выбора класса для рендеринга страниц исключений. По умолчанию используется Cake\Error\ExceptionRenderer. Ваш пользовательский класс рендерера исключений должен быть размещен в src/Error.
Ваш пользовательский рендерер должен ожидать исключение в своем конструкторе и реализовать метод render. Отсутствие этого приведет к дополнительным ошибкам.
Регистрация исключений
Используя встроенную обработку исключений, вы можете регистрировать все исключения, с которыми работает ErrorHandler, установив опцию log в значение true в вашем файле config/error.php. Включение этого параметра приведет к записи каждого исключения в Log и настроенные логгеры.
Ошибки PHP
Обработчик ошибок также предоставляет встроенные функции для обработки ошибок PHP (trigger_error). В режиме отладки ошибки будут выводиться на экран с помощью отладчика. В режиме производства ошибки будут регистрироваться в Log. Вы можете контролировать регистрируемые ошибки, установив опцию errorLevel в файле config/error.php.
Регистрация ошибок
Когда ErrorHandler используется для обработки ошибок, вы можете включить регистрацию ошибок, установив опцию log в значение true. Это приведет к записи всех ошибок в настроенные обработчики логов.
Управление ошибками, которые регистрируются/отображаются
Вы можете контролировать, какие ошибки регистрируются/отображаются ErrorHandler, установив errorLevel. Установка этого значения на одно или комбинацию нескольких констант E_* позволит включить только указанные ошибки:
$options['errorLevel'] = E_ALL & ~E_NOTICE;
Это включит обработку всех ошибок, кроме Notice.
- Cake\Error\BaseErrorHandler
-
Cake\Error\ErrorHandler
См.: ExceptionRenderer для получения дополнительной информации о настройке рендеринга исключений.
Расположен в Error/ErrorHandler.php
Подробное описание метода
__constructsource public
__construct( array $options [] )
Конструктор
Параметры
- массив
$optionsнеобязательно [] - Параметры для обработки ошибок.
_clearOutputsource protected
_clearOutput( )
Очистить буферы вывода, чтобы страницы ошибок отображались должным образом.
Легко дублируется в тестировании.
_displayErrorsource protected
_displayError( array $error , boolean $debug )
Отобразить ошибку.
Шаблонный метод BaseErrorHandler.
Только при debug > 2 будет отображена отформатированная ошибка.
Параметры
- массив
$error - Массив данных об ошибке.
- булево
$debug - Является ли приложение в режиме отладки.
_displayExceptionsource protected
_displayException( Exception $exception )
Отображает тело ответа исключения.
Параметры
- Исключение
$exception - Исключение для отображения
Возможные исключения
ExceptionКогда выбранный рендерер исключений недопустим.
_sendResponsesource protected
_sendResponse( string|Cake\Network\Response $response )
Метод, который легко дублируется в тестировании.
Параметры
- строка|
Cake\Network\Response$response - Либо сообщение, либо объект ответа.
Методы, унаследованные от Cake\Error\BaseErrorHandler
_getMessagesource protected
_getMessage( Exception $exception )
Генерирует отформатированное сообщение об ошибке
Параметры
- Исключение
$exception - Экземпляр исключения
Возвращает
stringОтформатированное сообщение
_logErrorsource protected
_logError( string $level , array $data )
Записать ошибку.
Параметры
- строка
$level - Имя уровня лога.
- массив
$data - Массив данных об ошибке.
Возвращает
booleanbool
_logExceptionsource protected
_logException( Exception $exception )
Обрабатывает регистрацию исключений
Параметры
- Исключение
$exception - Экземпляр исключения.
Возвращает
booleanbool
_stopsource protected
_stop( integer $code )
Остановка процесса.
Реализовано в подклассах, которым это необходимо.
Параметры
- целое число
$code - Код выхода.
handleErrorsource public
handleError( integer $code , string $description , string|null $file null , integer|null $line null , array|null $context null )
Установлен как обработчик ошибок по умолчанию CakePHP.
Настройте или замените этот обработчик ошибок с помощью config/error.php. Эта функция будет использовать Debugger для отображения ошибок, когда debug > 0. И будет регистрировать ошибки в Log, когда debug == 0.
Вы можете использовать опцию 'errorLevel', чтобы установить тип обрабатываемых ошибок. Включить трассировки для ошибок можно с помощью опции 'trace'.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка|null
$fileнеобязательно null - Файл, в котором произошла ошибка
- целое число|null
$lineнеобязательно null - Строка, которая вызвала ошибку
- массив|null
$contextнеобязательно null - Контекст
Возвращает
booleanTrue, если ошибка была обработана
handleExceptionsource public
handleException( Exception $exception )
Обработка неперехваченных исключений.
Использует шаблонный метод, предоставленный подклассами, для отображения ошибок в подходящем для среды способе.
Параметры
- Исключение
$exception - Экземпляр исключения.
Возможные исключения
ExceptionКогда класс рендерера не найден
См.
http://php.net/manual/en/function.set-exception-handler.phphandleFatalErrorsource public
handleFatalError( integer $code , string $description , string $file , integer $line )
Отображение/регистрация фатальной ошибки.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, которая вызвала ошибку
Возвращает
booleanbool
mapErrorCodesource public static
mapErrorCode( integer $code )
Преобразовать код ошибки в сообщение об ошибке и местоположение для логов.
Параметры
- целое число
$code - Код ошибки для преобразования
Возвращает
arrayМассив из сообщения об ошибке и местоположения для логов.
wrapAndHandleExceptionsource public
wrapAndHandleException( Exception|Error $exception )
Проверяет тип переданного исключения. Если это экземпляр Error, то он оборачивает переданный объект в другой объект Exception для обеспечения обратной совместимости.
Параметры
- Exception|Error
$exception - Исключение для обработки
Краткое описание свойств
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Error.ErrorHandler.html