Класс 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\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 Код выхода.
Возвращает
voidconfigShallow() 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 необязательный Значение для установки.
Возвращает
$thisgetConfig() 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 необязательный Возвращаемое значение, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для данного ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetLogger() public
getLogger(): Cake\Error\ErrorLoggerInterface
Получить логгер исключений.
Возвращает
Cake\Error\ErrorLoggerInterfacegetRenderer() 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 необязательный Контекст
Возвращает
boolhandleException() public
handleException(Throwable $exception): void
Обработка неперехваченных исключений.
Использует шаблонный метод, предоставленный подклассами, для отображения ошибок подходящим образом для среды.
Параметры
-
Throwable$exception Экземпляр исключения.
Возвращает
voidВыбрасывает
ExceptionПри невозможности найти класс рендерера
См. также
handleFatalError() public
handleFatalError(int $code, string $description, string $file, int $line): bool
Отобразить/Залогировать критическую ошибку.
Параметры
-
int$code Код ошибки
-
string$description Описание ошибки
-
string$file Файл, в котором произошла ошибка
-
int$line Строка, вызвавшая ошибку
Возвращает
boolincreaseMemoryLimit() public
increaseMemoryLimit(int $additionalKb): void
Увеличивает настройку PHP "memory_limit" ini на указанную величину в килобайтах.
Параметры
-
int$additionalKb Значение в килобайтах
Возвращает
voidlogException() public
logException(Throwable $exception, Psr\Http\Message\ServerRequestInterface|null $request = null): bool
Залогировать ошибку исключения, если применимо.
Параметры
-
Throwable$exception Исключение, для которого нужно залогировать сообщение.
-
Psr\Http\Message\ServerRequestInterface|null$request optional Текущий запрос.
Возвращает
boolmapErrorCode() public static
mapErrorCode(int $code): array
Сопоставить код ошибки со словом Ошибка и местом лога.
Параметры
-
int$code Код ошибки для сопоставления
Возвращает
arrayregister() public
register(): void
Зарегистрировать обработчики ошибок и исключений.
Возвращает
voidsetConfig() 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