Класс 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Конфигурация выполнения
- $_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 Код завершения.
Возвращает
voidconfigShallow() 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 необязательно Значение для установки.
Возвращает
$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|null $context = null): bool
Установлен как обработчик ошибок по умолчанию CakePHP.
Используйте config/error.php для настройки или замены этого обработчика ошибок. Эта функция будет использовать Debugger для отображения ошибок в режиме отладки. А при выключенном режиме отладки будет записывать ошибки в журнал.
Вы можете использовать опцию 'errorLevel' для установки типа обрабатываемых ошибок. Включить трассировки ошибок можно с помощью опции 'trace'.
Параметры
-
int$code Код ошибки
-
string$description Описание ошибки
-
string|null$file необязательно Файл, в котором произошла ошибка
-
int|null$line необязательно Строка, вызвавшая ошибку
-
array|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 $request = null): bool
Залогировать ошибку исключения, если применимо.
Параметры
-
Throwable$exception Исключение, для которого нужно залогировать сообщение.
-
Psr\Http\Message\ServerRequestInterface$request optional Текущий запрос.
Возвращает
boolmapErrorCode() public static
mapErrorCode(int $code): array
Сопоставить код ошибки со словом Ошибка и местом лога.
Параметры
-
int$code Код ошибки для сопоставления
Возвращает
arrayregister() public
register(): void
Зарегистрировать обработчики ошибок и исключений.
Возвращает
voidsetConfig() 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