Я пытаюсь настроить прослушиватель, который уведомляет меня (например, по электронной почте) об ошибке. Я создал 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 и о различии между Кодом статуса и Кодом, я весь в ушах!
Есть встроенное решение для отправки исключений по электронной почте.
Относительно вашего слушателя не работает в некоторых случаях. Неустранимые ошибки не оставляют Symfony никакой возможности справиться с ними. Неустранимая ошибка — использование несуществующего класса или вызов несуществующего метода. Эти типы ошибок являются ошибками программирования и не могут быть обработаны Symfony в основном, потому что PHP просто умирает там.
Других решений пока нет …