Symfony onKernelException слушатель

Я пытаюсь настроить прослушиватель, который уведомляет меня (например, по электронной почте) об ошибке. Я создал ExceptionListener это прекрасно работает, когда я выбрасываю ошибку 500, например:

throw new \Exception( 'Something went wrong!', 500 );

Однако в других случаях, например, когда я целенаправленно вызываю несуществующий класс:

$error = new NotExistantClass;

В этом случае я ничего не получаю от слушателя, будь то в режиме prod или dev. Также в режиме Prod я получаю белую страницу, а не мою ошибку 500 страниц.

Можно ли избежать такого поведения? (то есть получить фатальную ошибку, которая переходит на страницу ошибки 500 и заставить моего слушателя уведомить меня)

Вот фактический слушатель: (Я не ставлю services.yml так как слушатель вроде работает эффективно)

public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
$flatException = FlattenException::create( $exception );
$code = $flatException->getStatusCode();
//$code = $exception->getCode();
//die( var_dump( $code ) );
if ( $code == 500 ) {
// notifies me
}
}

Кроме того, если кто-то может рассказать об использовании FlattenException и о различии между Кодом статуса и Кодом, я весь в ушах!

1

Решение

Есть встроенное решение для отправки исключений по электронной почте.

Относительно вашего слушателя не работает в некоторых случаях. Неустранимые ошибки не оставляют Symfony никакой возможности справиться с ними. Неустранимая ошибка — использование несуществующего класса или вызов несуществующего метода. Эти типы ошибок являются ошибками программирования и не могут быть обработаны Symfony в основном, потому что PHP просто умирает там.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]