Я использую Bugsnag для регистрации ошибок для нашего приложения.Приложение построено на Symfony 4, и у меня есть собственный слушатель, который перехватывает исключения и обрабатывает некоторые из них.Что мне нужно, это сказать Bugsnag игнорировать исключения, которые я обрабатываю вручную (нет необходимости регистрировать их, поскольку они уже обработаны).
Мой пользовательский прослушиватель имеет более высокий приоритет, чем прослушиватель Bugsnag (поэтомупобежал первым).Проблема заключается в том, что остановка распространения события нарушает другие функции (например, прослушиватель безопасности больше не запускается, поскольку он имеет более низкий приоритет, чем bugsnag по умолчанию).
Ниже приведен мой код прослушивателя (ну ... соответствующая частьэто):
class ExceptionListener
{
protected $router;
private $mailerService;
private $tokenStorage;
private $request;
private $em;
/**
* @var UtilsService
*/
private $utilsService;
public function __construct(Router $router, MailerService $mailerService, TokenStorageInterface $tokenStorage, RequestStack $request, EntityManagerInterface $em, UtilsService $utilsService)
{
$this->router = $router;
$this->mailerService = $mailerService;
$this->tokenStorage = $tokenStorage;
$this->request = $request;
$this->em = $em;
$this->utilsService = $utilsService;
}
public function onKernelException(ExceptionEvent $event)
{
$exception = $event->getException();
$message = $exception->getMessage();
switch (true) {
case $exception instanceof NotFoundHttpException:
// Redirect somewhere
break;
case $exception instanceof CustomException:
// Do some stuff
$event->stopPropagation(); // This does what I need (stops propagation to bugsnag listener) but breaks other things so is not a solution (since it stops propagation to everything).
break;
}
return false;
}
}
Мне нужно просто ... если выброшенное исключение является экземпляром CustomException, я хочу, чтобы оно НЕ отправлялось в Bugsnag.
2 возможных решениячто я вижу (другие приветствуются ofc):