Класс ErrorHandler
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
Краткое описание свойств
-
$_optionsprotectedПараметры для обработки ошибок.array
Краткое описание методов
- __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 - Массив данных об ошибке.
- булево
$debug - Признак, находится ли приложение в режиме отладки.
_displayException()source protected
_displayException( Exception $exception )
Отображение тела ответа исключения.
Параметры
- Исключение
$exception - Исключение для отображения
Возможные исключения
ИсключениеПри невалидном выбранном обработчике исключений.
_sendResponse()source protected
_sendResponse( string|Cake\Network\Response $response )
Метод, который легко можно подменить при тестировании.
Параметры
- строка|
Cake\Network\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\Network\Request $request )
Получение контекста запроса для отслеживания ошибок/исключений.
Параметры
-
Cake\Network\Request$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 - Контекст
Возвращаемое значение
булевоTrue, если ошибка была обработана
handleException()source public
handleException( Exception $exception )
Обработка неперехваченных исключений.
Использует шаблонный метод, предоставленный подклассами, для отображения ошибок соответствующим образом в среде.
Параметры
- Исключение
$exception - Экземпляр исключения.
Исключения
ИсключениеПри отсутствии класса рендера
См. также
http://php.net/manual/ru/function.set-exception-handler.phphandleFatalError()source public
handleFatalError( integer $code , string $description , string $file , integer $line )
Отображение/логирование критической ошибки.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, вызвавшая ошибку
Возвращает
booleanincreaseMemoryLimit()source public
increaseMemoryLimit( string $additionalKb )
Увеличивает значение параметра PHP «memory_limit» в ini-файле на указанную величину в килобайтах.
Параметры
- строка
$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.3/class-Cake.Error.ErrorHandler.html