Класс ErrorHandler
Обработчик ошибок предоставляет базовые обработку ошибок и исключений для вашего приложения. Он перехватывает и обрабатывает все необработанные исключения и ошибки. Отображает полезные ошибки фреймворка, когда debug > 1.
Необработанные исключения
Когда debug < 1, CakeException будет отображать ошибки 404 или 500. Если возникает необработанное исключение, тип которого обработчик ErrorHandler не знает, оно будет обработано как ошибка 500.
Реализация обработки исключений, специфичных для приложения
Вы можете реализовать обработку исключений, специфичных для приложения, несколькими способами. Каждый подход предоставляет разный уровень управления процессом обработки исключений.
- Установите Configure::write('Exception.handler', 'YourClass::yourMethod');
- Создайте AppController::appError();
- Установите Configure::write('Exception.renderer', 'YourClass');
Создайте собственный обработчик исключений с Exception.handler
Это даёт вам полный контроль над процессом обработки исключений. Выбранный класс должен быть загружен в вашем app/Config/bootstrap.php, чтобы он мог обрабатывать любые исключения. Вы можете определить обработчик как любой тип обратного вызова. Использование Exception.handler переопределяет все другие настройки и логику обработки исключений.
Использование AppController::appError();
Этот метод контроллера вызывается вместо стандартного отображения исключений. Он получает брошенное исключение в качестве единственного аргумента. Вы должны реализовать обработку ошибок в этом методе. Использование AppController::appError() переопределит любые настройки для Exception.renderer.
Использование пользовательского рендерера с Exception.renderer
Если вы не хотите контролировать обработку исключений, но хотите изменить способ отображения исключений, вы можете использовать Exception.renderer для выбора класса для отображения страниц исключений. По умолчанию используется ExceptionRenderer. Ваш пользовательский класс рендерера исключений должен быть размещён в app/Lib/Error.
Ваш пользовательский рендерер должен ожидать исключение в конструкторе и реализовать метод render. Отсутствие этого приведёт к дополнительным ошибкам.
Регистрация исключений
Используя встроенную обработку исключений, вы можете регистрировать все исключения, обрабатываемые ErrorHandler, установив Exception.log в значение true в вашем core.php. Включение этого параметра будет регистрировать каждое исключение в CakeLog и в настроенных обработчиках логов.
Ошибки PHP
Обработчик ошибок также предоставляет встроенные возможности для обработки ошибок PHP (trigger_error). В режиме отладки ошибки будут выводиться на экран с использованием отладчика. В режиме производства ошибки будут регистрироваться в CakeLog. Вы можете контролировать, какие ошибки регистрировать, установив Error.level в вашем core.php.
Регистрация ошибок
При использовании ErrorHandler для обработки ошибок вы можете включить регистрацию ошибок, установив Error.log в значение true. Это позволит регистрировать все ошибки в настроенных обработчиках логов.
Управление тем, какие ошибки регистрируются/отображаются
Вы можете управлять тем, какие ошибки регистрируются/отображаются обработчиком ErrorHandler, установив Error.level. Установка значения в одно или комбинацию нескольких констант E_* позволит включить только указанные ошибки.
Например: Configure::write('Error.level', E_ALL & ~E_NOTICE);
Это включит обработку всех ошибок, кроме Notice.
См.: ExceptionRenderer для получения дополнительной информации о том, как настроить отображение исключений.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Error/ErrorHandler.php
Краткое описание свойств
-
booleanОпределяет, следует ли прекратить отображение исключения, если сам рендерер выбрасывает исключения.
Краткое описание методов
- Генерирует отформатированное сообщение об ошибке
- Обрабатывает регистрацию исключений
-
Установлен как обработчик ошибок по умолчанию CakePHP. Используйте Configure::write('Error.handler', $callback), чтобы использовать собственные методы обработки ошибок. Эта функция будет использовать Debugger для отображения ошибок при debug > 0. И будет регистрировать ошибки в CakeLog, когда debug == 0.
- Установлен как обработчик исключений по умолчанию процессом загрузки CakePHP.
- Генерирует страницу ошибки, когда происходит ошибка типа fatal.
- Преобразует код ошибки в слово Ошибка и регистрирует местоположение.
Подробное описание методов
_getMessage()source protected static
_getMessage( Exception $exception )
Генерирует отформатированное сообщение об ошибке
Параметры
- Исключение
$exception - Экземпляр исключения
Возвращает
строкаОтформатированное сообщение
_log()source protected static
_log( Exception|ParseError $exception , array $config )
Обрабатывает регистрацию исключений
Параметры
- Исключение|ParseError
$exception - Исключение для отображения.
- массив
$config - Массив настроек для регистрации.
Возвращает
булевоhandleError()source public static
handleError( integer $code , string $description , string $file null , integer $line null , array $context null )
Установлен как обработчик ошибок по умолчанию CakePHP. Используйте Configure::write('Error.handler', $callback), чтобы использовать собственные методы обработки ошибок. Эта функция будет использовать Debugger для отображения ошибок при debug > 0. И будет регистрировать ошибки в CakeLog, когда debug == 0.
Вы можете использовать Configure::write('Error.level', $value); для установки типа ошибок, которые будут обрабатываться здесь. Стек отслеживания ошибок можно включить с помощью Configure::write('Error.trace', true);
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$fileнеобязательно null - Файл, в котором произошла ошибка
- целое число
$lineнеобязательно null - Строка, вызвавшая ошибку
- массив
$contextнеобязательно null - Контекст
Возвращает
булевоtrue, если ошибка была обработана
handleException()source public static
handleException( Exception|ParseError $exception )
Установлен как обработчик исключений по умолчанию процессом загрузки CakePHP.
Это либо использует настроенный класс рендерера исключений, либо использует стандартный ExceptionRenderer.
Параметры
- Исключение|ParseError
$exception - Исключение для отображения.
См.
http://php.net/manual/en/function.set-exception-handler.phphandleFatalError()source public static
handleFatalError( integer $code , string $description , string $file , integer $line )
Генерирует страницу ошибки, когда происходит ошибка типа fatal.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, вызвавшая ошибку
Возвращает
булевоИсключения
FatalErrorExceptionЕсли рендерер исключений выбросил исключение во время отображения, и debug > 0.
InternalErrorExceptionЕсли рендерер исключений выбросил исключение во время отображения, и debug равен 0.
mapErrorCode()source public static
mapErrorCode( integer $code )
Преобразует код ошибки в слово Ошибка и регистрирует местоположение.
Параметры
- целое число
$code - Код ошибки для преобразования
Возвращает
массивМассив слова ошибки и местоположения регистрации.
Подробное описание свойств
$_bailExceptionRenderingsource
protected static boolean
Определяет, следует ли прекратить отображение исключения, если сам рендерер выбрасывает исключения.
false
© 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/2.8/class-ErrorHandler.html