Spec-Zone.ru › CakePHP 2.7

Класс 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.

Пакет: Cake\Error
Авторские права: 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
Массив настроек для регистрации.

Возвращает

boolean
bool

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
Контекст

Возвращает

boolean
true, если ошибка была обработана

handleExceptionsource public static

handleException( Exception $exception )

Установлен как обработчик исключений по умолчанию процессом загрузки CakePHP.

Это либо использует настроенный класс рендеринга исключений, либо использует стандартный ExceptionRenderer.

Параметры

Exception $exception
Исключение для рендеринга.

См. также

http://php.net/manual/en/function.set-exception-handler.php

handleFatalErrorsource public static

handleFatalError( integer $code , string $description , string $file , integer $line )

Генерирует страницу ошибки, когда происходит какая-либо фатальная ошибка.

Параметры

целое число $code
Код ошибки
строка $description
Описание ошибки
строка $file
Файл, в котором произошла ошибка
целое число $line
Строка, вызвавшая ошибку

Возвращает

boolean
bool

Исключение

FatalErrorException
Если рендерер исключений выбросил исключение во время рендеринга, и debug > 0.
InternalErrorException
Если рендерер исключений выбросил исключение во время рендеринга, и debug равен 0.

mapErrorCodesource public static

mapErrorCode( integer $code )

Преобразует код ошибки в текст и местоположение лога.

Параметры

целое число $code
Код ошибки для преобразования

Возвращает

array
Массив с текстом ошибки и местоположением лога.

Краткое описание свойств

$_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.7/class-ErrorHandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API