Класс 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. (https://cakefoundation.org)
Лицензия: MIT License
Расположение: 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–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/2.10/class-ErrorHandler.html