Метод shouldReport
Метод shouldReport используется в классе App\Exceptions\Handler
для проверки необходимости отправки отчёта об исключении.
Он принимает один параметр - экземпляр исключения, а возвращает true,
если ошибка должна быть зарегистрирована в системах логирования и мониторинга,
или false, если отправка отчёта не требуется.
По умолчанию метод возвращает true для всех исключений, кроме тех,
что были явно исключены из отчётности.
Синтаксис
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
// ...
protected function shouldReport(Throwable $e)
{
return parent::shouldReport($e);
}
}
?>
Пример
Рассмотрим базовый пример использования метода для исключения конкретных типов ошибок из отчётности:
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Throwable;
class Handler extends ExceptionHandler
{
// ...
protected function shouldReport(Throwable $e)
{
if ($e instanceof ModelNotFoundException) {
return false;
}
return parent::shouldReport($e);
}
}
?>
Результат выполнения кода при возникновении исключения:
"ModelNotFoundException не будет отправлен в отчёт"
Пример
Давайте настроим отправку отчётов только для критических ошибок, игнорируя все HTTP-исключения с кодом 404 и 403:
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Throwable;
class Handler extends ExceptionHandler
{
// ...
protected function shouldReport(Throwable $e)
{
if ($e instanceof NotFoundHttpException ||
$e instanceof AccessDeniedHttpException) {
return false;
}
return parent::shouldReport($e);
}
}
?>
Результат выполнения кода:
"HTTP-исключения 404 и 403 исключены из отчётности"
Пример
Пример отправки отчётов только для исключений, связанных с базой данных:
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\QueryException;
use Throwable;
class Handler extends ExceptionHandler
{
// ...
protected function shouldReport(Throwable $e)
{
if ($e instanceof QueryException) {
return true;
}
return false;
}
}
?>
Результат выполнения кода:
"Отправлен отчёт только об ошибках базы данных"
Смотрите также
-
метод
report,
который регистрирует исключение в системах логирования -
метод
render,
который отображает исключение в HTTP-ответе -
класс
Exceptions,
который предоставляет дополнительные методы для работы с исключениями -
метод
dontReport,
который исключает типы исключений из отчётности