Класс 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
Расположение: Cake/Error/ErrorHandler.php
Краткое описание свойств
-
booleanВыполнять ли рендеринг исключения, если сам рендерер бросает исключения.
Краткое описание методов
- Генерирует строку для описания ошибки.
- Генерирует отформатированное сообщение об ошибке
- Обрабатывает регистрацию исключений
-
Установлен как обработчик ошибок по умолчанию CakePHP. Используйте Configure::write('Error.handler', $callback), чтобы использовать собственные методы обработки ошибок. Эта функция будет использовать Debugger для отображения ошибок, когда debug > 0. И будет регистрировать ошибки в CakeLog, когда debug == 0.
- Установлен как обработчик исключений по умолчанию процессом загрузки CakePHP.
- Генерирует страницу ошибки при возникновении критической ошибки.
- Преобразует код ошибки в слово «Ошибка» и местоположение для регистрации.
Подробное описание методов
_getErrorMessage()source protected static
_getErrorMessage( string $error , integer $code , string $description , string $file , integer $line )
Генерирует строку для описания ошибки.
Параметры
- строка
$error - Тип ошибки (например, "Предупреждение")
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, которая вызвала ошибку
Возвращает
строка_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 )
Генерирует страницу ошибки при возникновении критической ошибки.
Параметры
- целое число
$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.
https://api.cakephp.org/2.9/class-ErrorHandler.html