Özel durumlar üzerinde çalışıyorum ve veritabanıyla ilgili istisnaların günlüğe kaydedileceği ve e-posta ile gönderileceği bir istisna dinleyicisi oluşturmaya çalışıyorum.Symfony3: Merkezi özel durum işleme
Ama sorun istisnayı yakalamak zaman dinleyici olarak kullanıcıya mesaj göstermek için çağrılmaz şudur:
try {
try {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')
->getUserByEmail('[email protected]');
}
catch(\Doctrine\DBAL\DBALException $e) {
throw new \Doctrine\DBAL\DBALException('DBAL error!!');
}
}
catch(\Exception $e) {
echo $e->getMessage();
}
hata hale değilken aynı dinleyici denir:
try {
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('AppBundle:User')
->getUserByEmail('[email protected]');
}
catch(\Doctrine\DBAL\DBALException $e) {
throw new \Doctrine\DBAL\DBALException('DBAL error!!');
}
istisna dinleyici:
class ExceptionListener {
public function onKernelException(GetResponseForExceptionEvent $event) {
$exception = $event->getException();
if ($exception instance of \Doctrine\DBAL\DBALException) {
//log the error
}
...
...
}
}
Yapmak istediğim, hataları doğru ve tek bir yerde yönetmektir. Teşekkürler.
BTW zaten [Yapılandırma Monolog Hataları Email] görmesine (http://symfony.com/doc/current/cookbook/logging/monolog_email.html)? – Matteo
Evet ve muhtemelen bunu uygulayacaktır. Teşekkür ederim. – codeit