Spec-Zone.ru › CakePHP 3.7

Класс ErrorHandler

ErrorHandler предоставляет базовые обработку ошибок и исключений для вашего приложения. Он перехватывает и обрабатывает все необработанные исключения и ошибки. Отображает полезные ошибки фреймворка, когда debug > 1.

Неперехваченные исключения

Когда debug < 1, CakeException отобразит ошибки 404 или 500. Если возникло неперехваченное исключение, тип которого ErrorHandler не знает, оно будет обработано как ошибка 500.

Реализация обработки исключений, специфичных для приложения

Вы можете реализовать обработку исключений, специфичных для приложения, несколькими способами. Каждый подход предоставляет разные уровни контроля над процессом обработки исключений.

  • Измените config/error.php и настройте пользовательскую обработку исключений.
  • Используйте опцию exceptionRenderer для вставки обработчика исключений. Это позволит сохранить существующую логику обработки, но переопределить логику отображения.

Создание собственного обработчика исключений

Это даёт вам полный контроль над процессом обработки исключений. Выбранный класс должен быть загружен в config/error.php и зарегистрирован как обработчик исключений по умолчанию.

Использование пользовательского рендерера с exceptionRenderer

Если вы не хотите управлять обработкой исключений, но хотите изменить способ отображения исключений, вы можете использовать опцию exceptionRenderer для выбора класса для рендеринга страниц исключений. По умолчанию используется Cake\Error\ExceptionRenderer. Ваш пользовательский класс рендерера исключений должен быть размещён в src/Error.

Ваш пользовательский рендерер должен ожидать исключение в своём конструкторе и реализовать метод render. Отсутствие этого приведёт к дополнительным ошибкам.

Ведение логов исключений

Используя встроенную обработку исключений, вы можете вести лог всех исключений, которые обрабатываются ErrorHandler, установив опцию log в значение true в config/error.php. Включение этой опции позволит записывать каждое исключение в Log и в настроенные обработчики логов.

Ошибки PHP

ErrorHandler также предоставляет встроенные возможности для обработки ошибок PHP (trigger_error). В режиме отладки ошибки будут выведены на экран с помощью отладчика. В режиме производства ошибки будут записаны в Log. Вы можете контролировать, какие ошибки регистрируются, установив опцию errorLevel в config/error.php.

Ведение логов ошибок

Когда ErrorHandler используется для обработки ошибок, вы можете включить ведение логов ошибок, установив опцию log в значение true. Это позволит записывать все ошибки в настроенные обработчики логов.

Управление ошибками, которые регистрируются/отображаются

Вы можете управлять ошибками, которые регистрируются/отображаются ErrorHandler, установив errorLevel. Установка этого значения на одно или несколько значений констант E_* позволит включить только указанные ошибки:

$options['errorLevel'] = E_ALL & ~E_NOTICE;

Это включит обработку всех ошибок, кроме Notice.

Cake\Error\BaseErrorHandler
Extended by Cake\Error\ErrorHandler
Пространство имён: Cake\Error
См.: \Cake\Error\ExceptionRenderer для получения дополнительной информации о настройке отображения исключений.
Расположение: Error/ErrorHandler.php

Унаследованные свойства

  • _handled, _options

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

  • __construct() public
    Конструктор
  • _clearOutput() protected
    Очистить буферы вывода, чтобы страницы ошибок отображались должным образом.
  • _displayError() protected
    Отобразить ошибку.
  • _displayException() protected
    Отобразить тело ответа исключения.
  • _logInternalError() protected
    Ведёт логирование ошибок PHP5 и PHP7.
  • _sendResponse() protected
    Метод, который легко подменить в тестах.

Подробное описание методов

__construct()source public

__construct( array $options = [] )

Конструктор

Параметры

массив $options необязательно []
Опции для обработки ошибок.

_clearOutput()source protected

_clearOutput( )

Очистить буферы вывода, чтобы страницы ошибок отображались должным образом.

Легко подменяется в тестах.

_displayError()source protected

_displayError( array $error , boolean $debug )

Отобразить ошибку.

Метод-шаблон BaseErrorHandler.

Параметры

массив $error
Массив данных об ошибке.
логическое $debug
Является ли приложение в режиме отладки.

_displayException()source protected

_displayException( Exception $exception )

Отобразить тело ответа исключения.

Параметры

Исключение $exception
Исключение для отображения.

Возможные исключения

Исключение
Если выбранный обработчик исключений недействителен.

_logInternalError()source protected

_logInternalError( Throwable|Exception $exception )

Ведёт логирование ошибок PHP5 и PHP7.

Часть PHP5 будет удалена в версии 4.0.

Параметры

Throwable|Exception $exception
Исключение.

_sendResponse()source protected

_sendResponse( string|Cake\Http\Response $response )

Метод, который легко подменить в тестах.

Параметры

строка|Cake\Http\Response $response
Либо сообщение, либо объект ответа.

Методы, унаследованные от Cake\Error\BaseErrorHandler

_getMessage()source protected

_getMessage( Exception $exception )

Генерирует отформатированное сообщение об ошибке

Параметры

Исключение $exception
Экземпляр исключения

Возвращает

строка
Отформатированное сообщение

_logError()source protected

_logError( string $level , array $data )

Записать ошибку в лог.

Параметры

строка $level
Имя уровня лога.
массив $data
Массив данных об ошибке.

Возвращает

логическое

_logException()source protected

_logException( Exception $exception )

Обрабатывает логирование исключений

Параметры

Исключение $exception
Экземпляр исключения.

Возвращает

логическое

_requestContext()source protected

_requestContext( Cake\Http\ServerRequest $request )

Получить контекст запроса для трассировки ошибок/исключений.

Параметры

Cake\Http\ServerRequest $request
Запрос для чтения.

Возвращает

строка

_stop()source protected

_stop( integer $code )

Остановить процесс.

Реализовано в подклассах, которым это нужно.

Параметры

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

getMessageForException()source protected

getMessageForException( Exception $exception , boolean $isPrevious = false )

Сгенерировать сообщение для исключения

Параметры

Исключение $exception
Исключение, для которого нужно сгенерировать сообщение.
логическое $isPrevious необязательно false
False для исходного исключения, true для предыдущего

Возвращает

строка
Сообщение об ошибке
END_OF_DOCUMENT_MARKER

handleError()source public

handleError( integer $code , string $description , string|null $file = null , integer|null $line = null , array|null $context = null )

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

Используйте config/error.php для настройки или замены этого обработчика ошибок. Эта функция будет использовать Debugger для отображения ошибок, когда debug > 0. И будет регистрировать ошибки в Log, когда debug == 0.

Вы можете использовать опцию «errorLevel», чтобы установить тип обрабатываемых ошибок. Стек отслеживания ошибок можно включить с помощью опции «trace».

Параметры

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

Возвращает

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

handleException()source public

handleException( Exception $exception )

Обработка необработанных исключений.

Использует шаблонный метод, предоставляемый подклассами, для отображения ошибок подходящим образом для среды.

Параметры

Исключение $exception
Экземпляр исключения.

Выбрасывает

Исключение
Если класс рендера не найден

См.

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

handleFatalError()source public

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

Отображение/регистрация критической ошибки.

Параметры

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

Возвращает

boolean

increaseMemoryLimit()source public

increaseMemoryLimit( integer $additionalKb )

Увеличивает значение ini PHP «memory_limit» на указанную величину в килобайтах.

Параметры

целое число $additionalKb
Значение в килобайтах

mapErrorCode()source public static

mapErrorCode( integer $code )

Сопоставление кода ошибки со словом Ошибка и местом лога.

Параметры

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

Возвращает

массив
Массив со словом Ошибка и местом лога.

register()source public

register( )

Регистрация обработчиков ошибок и исключений.

wrapAndHandleException()source public

wrapAndHandleException( Exception|Error $exception )

Проверяет тип переданного исключения. Если это экземпляр Error, то он оборачивает переданный объект внутри другого объекта Exception для обеспечения обратной совместимости.

Параметры

Исключение|Ошибка $exception
Исключение для обработки

© 2005–present 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/3.7/class-Cake.Error.ErrorHandler.html

Spec-Zone.ru

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