Класс 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Отображение тела ответа исключения.
- _sendResponse() protectedМетод, который можно легко заглушить при тестировании.
Подробное описание методов
__construct()source public
__construct( array $options [] )
Конструктор
Параметры
- массив
$optionsнеобязательно [] - Параметры для обработки ошибок.
_clearOutput()source protected
_clearOutput( )
Очистка буферов вывода для правильного отображения страниц ошибок.
Легко заглушается при тестировании.
_displayError()source protected
_displayError( array $error , boolean $debug )
Отображение ошибки.
Шаблонный метод BaseErrorHandler.
Только при debug > 2 будет отображаться отформатированная ошибка.
Параметры
- массив
$error - Массив данных об ошибке.
- boolean
$debug - Является ли приложение в режиме отладки.
_displayException()source protected
_displayException( Exception $exception )
Отображение тела ответа исключения.
Параметры
- Исключение
$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 - Массив данных об ошибке.
Возвращаемое значение
boolean_logException()source protected
_logException( Exception $exception )
Обработка регистрации исключений
Параметры
- Исключение
$exception - Экземпляр исключения.
Возвращаемое значение
boolean_requestContext()source protected
_requestContext( Cake\Http\ServerRequest $request )
Получение контекста запроса для трассировки ошибки/исключения.
Параметры
-
Cake\Http\ServerRequest$request - Запрос для чтения.
Возвращаемое значение
строка_stop()source protected
_stop( integer $code )
Остановка процесса.
Реализовано в подклассах, которым это необходимо.
Параметры
- целое
$code - Код завершения.
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–2017 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.4/class-Cake.Error.ErrorHandler.html