Spec-Zone.ru › CakePHP 4.3

Класс 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<string, mixed>

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

  • $_configInitialized protected
    bool

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

  • $_defaultConfig protected
    array<string, mixed>

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

  • $_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<string, mixed> $config = [])

Конструктор

Параметры

array<string, mixed> $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(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

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

Параметры

array<string, mixed>|string $key

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

mixed $value

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

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

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

Возвращает

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(string|int $level, array $data): bool

Регистрирует ошибку.

Параметры

string|int $level

Уровень записи в журнал.

array $data

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

Возвращает

bool

_logInternalError() protected

_logInternalError(Throwable $exception): void

Регистрирует внутренние ошибки.

Параметры

Throwable $exception

Исключение.

Возвращает

void

_sendResponse() protected

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

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

Параметры

Cake\Http\Response|string $response

Либо сообщение, либо объект ответа.

Возвращает

void

_stop() protected

_stop(int $code): void

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

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

Параметры

int $code

Код выхода.

Возвращает

void

configShallow() public

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

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

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

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

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

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

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

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

Параметры

array<string, mixed>|string $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<string, mixed>|null $context = null): bool

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

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

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

Параметры

int $code

Код ошибки

string $description

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

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

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

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

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

array<string, mixed>|null $context необязательный

Контекст

Возвращает

bool

handleException() public

handleException(Throwable $exception): void

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

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

Параметры

Throwable $exception

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

Возвращает

void

Выбрасывает

Exception
При невозможности найти класс рендерера

См. также

https://secure.php.net/manual/ru/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|null $request = null): bool

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

Параметры

Throwable $exception

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

Psr\Http\Message\ServerRequestInterface|null $request optional

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

Возвращает

bool

mapErrorCode() public static

mapErrorCode(int $code): array

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

Параметры

int $code

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

Возвращает

array

register() public

register(): void

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

Возвращает

void

setConfig() public

setConfig(array<string, mixed>|string $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']);

Параметры

array<string, mixed>|string $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<string, mixed>

$_configInitialized protected

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

Тип

bool

$_defaultConfig protected

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

Тип

array<string, mixed>

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

Spec-Zone.ru

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