Класс 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.
Только при debug > 2 будет отображена отформатированная ошибка.
Параметры
- массив
$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 - Код выхода.
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 - Контекст
Возвращает
booleanИстина, если ошибка обработана
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–2018 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.5/class-Cake.Error.ErrorHandler.html