Класс 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
См.: \Cake\Error\ExceptionRenderer для получения дополнительной информации о настройке отображения исключений.
Расположение: Error/ErrorHandler.php
Наследуемые свойства
Краткое описание методов
- __construct() publicКонструктор
- _clearOutput() protectedОчистка буферов вывода для корректного отображения страниц ошибок.
- _displayError() protectedОтображение ошибки.
- _displayException() protectedОтображение тела ответа исключения.
- _logInternalError() protectedРегистрация ошибок PHP5 и PHP7.
- _sendResponse() protectedМетод, который легко можно подменить при тестировании.
Подробное описание методов
__construct()source public
__construct( array $options = [] )
Конструктор
Параметры
- массив
$optionsнеобязательно [] - Параметры для обработки ошибок.
_clearOutput()source protected
_clearOutput( )
Очистка буферов вывода для корректного отображения страниц ошибок.
Легко подменяется при тестировании.
_displayError()source protected
_displayError( array $error , boolean $debug )
Отображение ошибки.
Шаблонный метод BaseErrorHandler.
Параметры
- массив
$error - Массив данных об ошибке.
- логическое значение
$debug - Является ли приложение в режиме отладки.
_displayException()source protected
_displayException( Exception $exception )
Отображение тела ответа исключения.
Параметры
- Исключение
$exception - Исключение для отображения.
Исключения
ИсключениеЕсли выбранный рендерер исключений некорректен.
_logInternalError()source protected
_logInternalError( Throwable|Exception $exception )
Регистрация ошибок PHP5 и PHP7.
Часть PHP5 будет удалена в версии 4.0.
Параметры
- Throwable|Исключение
$exception - Исключение.
_sendResponse()source protected
_sendResponse( string|Cake\Http\Response $response )
Метод, который легко можно подменить при тестировании.
Параметры
- строка|
Cake\Http\Response$response - Либо сообщение, либо объект ответа.
Методы, унаследованные от Cake\Error\BaseErrorHandler
_getMessage()source protected
_getMessage( Exception $exception )
Генерирует отформатированное сообщение об ошибке
Параметры
- Исключение
$exception - Экземпляр исключения
Возвращает
СтрокаОтформатированное сообщение
_logError()source protected
_logError( string $level , array $data )
Регистрация ошибки.
Параметры
- строка
$level - Имя уровня лога.
- массив
$data - Массив данных об ошибке.
Возвращает
Логическое значение_logException()source protected
_logException( Exception $exception )
Обработка регистрации исключений
Параметры
- Исключение
$exception - Экземпляр исключения.
Возвращает
Логическое значение_requestContext()source protected
_requestContext( Cake\Http\ServerRequest $request )
Получение контекста запроса для отслеживания ошибок/исключений.
Параметры
-
Cake\Http\ServerRequest$request - Запрос для чтения.
Возвращает
Строка_stop()source protected
_stop( integer $code )
Остановка процесса.
Реализуется в подклассах, которым это нужно.
Параметры
- целое число
$code - Код завершения.
getMessageForException()source protected
getMessageForException( Exception $exception , boolean $isPrevious = false )
Генерирует сообщение для исключения
Параметры
- Исключение
$exception - Исключение, для которого необходимо получить сообщение.
- логическое значение
$isPreviousнеобязательно false - False для исходного исключения, true для предыдущего
Возвращает
СтрокаСообщение об ошибке
handleError()source 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, если ошибка была обработана
handleException()source public
handleException( Exception $exception )
Обработка необработанных исключений.
Использует шаблонный метод, предоставляемый подклассами, для отображения ошибок соответствующим образом в среде.
Параметры
- Исключение
$exception - Экземпляр исключения.
Выбрасывает
ИсключениеПри отсутствии класса рендера
См. также
https://secure.php.net/manual/en/function.set-exception-handler.phphandleFatalError()source public
handleFatalError( integer $code , string $description , string $file , integer $line )
Отображение/регистрация фатальной ошибки.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, которая вызвала ошибку
Возвращает
booleanincreaseMemoryLimit()source public
increaseMemoryLimit( integer $additionalKb )
Увеличивает значение INI-переменной PHP "memory_limit" на указанную величину в килобайтах
Параметры
- целое число
$additionalKb - Значение в килобайтах
mapErrorCode()source public static
mapErrorCode( integer $code )
Преобразует код ошибки в описание ошибки и местоположение для регистрации.
Параметры
- целое число
$code - Код ошибки для преобразования
Возвращает
массивМассив с описанием ошибки и местоположением для регистрации.
wrapAndHandleException()source public
wrapAndHandleException( Exception|Error $exception )
Проверяет тип переданного исключения. Если это экземпляр Error , то он оборачивает переданный объект в другой объект Exception для обеспечения обратной совместимости.
Параметры
- Исключение|Ошибка
$exception - Исключение для обработки
© 2005–present 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.
https://api.cakephp.org/3.8/class-Cake.Error.ErrorHandler.html