Spec-Zone.ru › CakePHP 4.2

Класс ErrorHandler

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

Необработанные исключения

Когда режим отладки выключен, ExceptionRenderer отобразит ошибки 404 или 500. Если возникает необработанное исключение, тип которого ExceptionRenderer не знает, оно будет обработано как ошибка 500.

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

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

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

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

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

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

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

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

Регистрация исключений

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

Ошибки PHP

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

Регистрация ошибок

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

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

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

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

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

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

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

  • $_config protected
    array

    Конфигурация выполнения

  • $_configInitialized protected
    bool

    Указывает, была ли конфигурация свойства уже настроена значениями по умолчанию

  • $_defaultConfig protected
    array

    Параметры для использования в обработке ошибок.

  • $_handled protected
    bool
  • $logger protected
    Cake\Error\ErrorLoggerInterface|null

    Экземпляр регистратора исключений.

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

  • __construct() public

    Конструктор

  • _configDelete() protected

    Удаляет один ключ конфигурации.

  • _configRead() protected

    Считывает ключ конфигурации.

  • _configWrite() protected

    Записывает ключ конфигурации.

  • _displayError() protected

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

  • _displayException() protected

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

  • _logError() protected

    Зарегистрировать ошибку.

  • _logInternalError() protected

    Зарегистрировать внутренние ошибки.

  • _sendResponse() protected

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

  • _stop() protected

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

  • configShallow() public

    Объединить предоставленную конфигурацию с существующей. В отличие от config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.

  • getConfig() public

    Возвращает конфигурацию.

  • getConfigOrFail() public

    Возвращает конфигурацию для данного ключа.

  • getLogger() public

    Получить регистратор исключений.

  • getRenderer() public

    Получить экземпляр рендерера.

  • handleError() public

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

  • handleException() public

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

  • handleFatalError() public

    Отобразить/Зарегистрировать критическую ошибку.

  • increaseMemoryLimit() public

    Увеличивает значение INI настройки PHP "memory_limit" на указанную величину в килобайтах.

  • logException() public

    Зарегистрировать ошибку для исключения, если применимо.

  • mapErrorCode() public static

    Преобразовать код ошибки в слово ошибки и место лога.

  • register() public

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

  • setConfig() public

    Устанавливает конфигурацию.

  • wrapAndHandleException() public deprecated

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

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

__construct() public

__construct(array $config = [])

Конструктор

Параметры

array $config необязательно

Параметры обработки ошибок.

_configDelete() protected

_configDelete(string $key): void

Удаляет единственный ключ конфигурации.

Параметры

string $key

Ключ для удаления.

Возвращает

void

Исключения

Cake\Core\Exception\CakeException
при попытке перезаписать существующую конфигурацию

_configRead() protected

_configRead(string|null $key): mixed

Считывает ключ конфигурации.

Параметры

string|null $key

Ключ для считывания.

Возвращает

mixed

_configWrite() protected

_configWrite(string|array $key, mixed $value, bool|string $merge = false): void

Записывает ключ конфигурации.

Параметры

string|array $key

Ключ для записи.

mixed $value

Значение для записи.

bool|string $merge необязательно

True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.

Возвращает

void

Исключения

Cake\Core\Exception\CakeException
при попытке перезаписи существующей конфигурации

_displayError() protected

_displayError(array $error, bool $debug): void

Отображает ошибку.

Шаблонный метод BaseErrorHandler.

Параметры

array $error

Массив данных об ошибке.

bool $debug

Флаг включения/выключения отладки.

Возвращает

void

_displayException() protected

_displayException(Throwable $exception): void

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

Подклассы должны реализовывать этот метод для отображения необработанного исключения в соответствии с требуемым поведением для текущей среды выполнения.

Параметры

Throwable $exception

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

Возвращает

void

Исключения

Exception
при использовании некорректного обработчика исключений.

_logError() protected

_logError(int|string $level, array $data): bool

Записывает ошибку в журнал.

Параметры

int|string $level

Уровень журнала.

array $data

Массив данных об ошибке.

Возвращает

bool

_logInternalError() protected

_logInternalError(Throwable $exception): void

Записывает внутренние ошибки в журнал.

Параметры

Throwable $exception

Исключение.

Возвращает

void

_sendResponse() protected

_sendResponse(stringCake\Http\Response $response): void

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

Параметры

stringCake\Http\Response $response

Сообщения или объект ответа.

Возвращает

void

_stop() protected

_stop(int $code): void

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

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

Параметры

int $code

Код завершения.

Возвращает

void

configShallow() public

configShallow(string|array $key, mixed|null $value = null): $this

Сливает предоставленную конфигурацию с текущей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.

Установка конкретного значения:

$this->configShallow('key', $value);

Установка вложенного значения:

$this->configShallow('some.nested.key', $value);

Обновление нескольких параметров конфигурации одновременно:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Параметры

string|array $key

Ключ для установки, или массив конфигураций.

mixed|null $value необязательно

Значение для установки.

Возвращает

$this

getConfig() public

getConfig(string|null $key = null, mixed $default = null): mixed

Возвращает конфигурацию.

Использование

Чтение всей конфигурации:

$this->getConfig();

Чтение конкретного значения:

$this->getConfig('key');

Чтение вложенного значения:

$this->getConfig('some.nested.key');

Чтение со значением по умолчанию:

$this->getConfig('some-key', 'default-value');

Параметры

string|null $key необязательно

Ключ для получения, или null для всей конфигурации.

mixed $default необязательно

Значение по умолчанию, если ключ не найден.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает значение конфигурации по указанному ключу.

Значение конфигурации по указанному ключу должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Исключения

InvalidArgumentException

getLogger() public

getLogger(): Cake\Error\ErrorLoggerInterface

Получить обработчик исключений.

Возвращает

Cake\Error\ErrorLoggerInterface

getRenderer() public

getRenderer(Throwable $exception, Psr\Http\Message\ServerRequestInterface|null $request = null): Cake\Error\ExceptionRendererInterface

Получить экземпляр рендерера.

Параметры

Throwable $exception

Исключение, которое рендерится.

Psr\Http\Message\ServerRequestInterface|null $request необязательно

Запрос.

Возвращает

Cake\Error\ExceptionRendererInterface

Исключения

RuntimeException
при отсутствии класса рендерера.

handleError() public

handleError(int $code, string $description, string|null $file = null, int|null $line = null, array|null $context = null): bool

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

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

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

Параметры

int $code

Код ошибки

string $description

Описание ошибки

string|null $file необязательно

Файл, в котором произошла ошибка

int|null $line необязательно

Строка, вызвавшая ошибку

array|null $context необязательно

Контекст

Возвращает

bool

handleException() public

handleException(Throwable $exception): void

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

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

Параметры

Throwable $exception

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

Возвращает

void

Исключения

Exception
при отсутствии класса рендерера

См. также

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

handleFatalError() public

handleFatalError(int $code, string $description, string $file, int $line): bool

Отобразить/Залогировать критическую ошибку.

Параметры

int $code

Код ошибки

string $description

Описание ошибки

string $file

Файл, в котором произошла ошибка

int $line

Строка, вызвавшая ошибку

Возвращает

bool

increaseMemoryLimit() public

increaseMemoryLimit(int $additionalKb): void

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

Параметры

int $additionalKb

Значение в килобайтах

Возвращает

void

logException() public

logException(Throwable $exception, Psr\Http\Message\ServerRequestInterface $request = null): bool

Залогировать ошибку исключения, если применимо.

Параметры

Throwable $exception

Исключение, для которого нужно залогировать сообщение.

Psr\Http\Message\ServerRequestInterface $request optional

Текущий запрос.

Возвращает

bool

mapErrorCode() public static

mapErrorCode(int $code): array

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

Параметры

int $code

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

Возвращает

array

register() public

register(): void

Зарегистрировать обработчики ошибок и исключений.

Возвращает

void

setConfig() public

setConfig(string|array $key, mixed|null $value = null, bool $merge = true): $this

Устанавливает конфигурацию.

Использование

Установка определенного значения:

$this->setConfig('key', $value);

Установка вложенного значения:

$this->setConfig('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Параметры

string|array $key

Ключ для установки или полный массив конфигураций.

mixed|null $value optional

Значение для установки.

bool $merge optional

Производить рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает

$this

Вызывает

Cake\Core\Exception\CakeException
При попытке установить недопустимый ключ.

wrapAndHandleException() public

wrapAndHandleException(Throwable $exception): void

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

Параметры

Throwable $exception

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

Возвращает

void

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

$_config protected

Конфигурация во время выполнения

Тип

array

$_configInitialized protected

Указывает, была ли конфигурация уже настроена по умолчанию.

Тип

bool

$_defaultConfig protected

Параметры для обработки ошибок.

Тип

array

$_handled protected

Тип

bool

$logger protected

Экземпляр логгера исключений.

Тип

Cake\Error\ErrorLoggerInterface|null

© 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/4.2/class-Cake.Error.ErrorHandler.html

Spec-Zone.ru

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