Класс 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.
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
См.: ExceptionRenderer для получения дополнительной информации о настройке отображения исключений.
Расположение: Cake/Error/ErrorHandler.php
Подробное описание метода
_getMessagesource protected static
_getMessage( Exception $exception )
Генерирует отформатированное сообщение об ошибке
Параметры
- Exception
$exception - Экземпляр исключения
Возвращает
stringОтформатированное сообщение
_logsource protected static
_log( Exception $exception , array $config )
Обрабатывает регистрацию исключений
Параметры
- Exception
$exception - Исключение для рендеринга.
- массив
$config - Массив настроек для регистрации.
Возвращает
booleanbool
handleErrorsource 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 - Контекст
Возвращает
booleantrue, если ошибка была обработана
handleExceptionsource public static
handleException( Exception $exception )
Установлен как обработчик исключений по умолчанию процессом загрузки CakePHP.
Это либо использует настроенный класс рендеринга исключений, либо использует стандартный ExceptionRenderer.
Параметры
- Exception
$exception - Исключение для рендеринга.
См. также
http://php.net/manual/en/function.set-exception-handler.phphandleFatalErrorsource public static
handleFatalError( integer $code , string $description , string $file , integer $line )
Генерирует страницу ошибки, когда происходит какая-либо фатальная ошибка.
Параметры
- целое число
$code - Код ошибки
- строка
$description - Описание ошибки
- строка
$file - Файл, в котором произошла ошибка
- целое число
$line - Строка, вызвавшая ошибку
Возвращает
booleanbool
Исключение
FatalErrorExceptionЕсли рендерер исключений выбросил исключение во время рендеринга, и debug > 0.
InternalErrorExceptionЕсли рендерер исключений выбросил исключение во время рендеринга, и debug равен 0.
mapErrorCodesource public static
mapErrorCode( integer $code )
Преобразует код ошибки в текст и местоположение лога.
Параметры
- целое число
$code - Код ошибки для преобразования
Возвращает
arrayМассив с текстом ошибки и местоположением лога.
Краткое описание свойств
© 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.7/class-ErrorHandler.html