Как поймать Исключение в symfony 2?

Как перехватить исключение в контроллере и показать флеш-сообщение в Symfony 2?

try{ $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('target page')); } catch(\Exception $e){ // What to do in this part??? } return $this->render('MyTestBundle:Article:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView(), )); 

Что делать в блоке catch ?

Related of "Как поймать Исключение в symfony 2?"

Вы должны позаботиться об исключениях, которые могут быть подняты:

 public function postAction(Request $request) { // ... try{ $em = $this->getDoctrine()->getManager(); $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('target page')); } catch(\Doctrine\ORM\ORMException $e){ // flash msg $this->get('session')->getFlashBag()->add('error', 'Your custom message'); // or some shortcut that need to be implemented // $this->addFlash('error', 'Custom message'); // error logging - need customization $this->get('logger')->error($e->getMessage()); //$this->get('logger')->error($e->getTraceAsString()); // or some shortcut that need to be implemented // $this->logError($e); // some redirection eg to referer return $this->redirect($request->headers->get('referer')); } catch(\Exception $e){ // other exceptions // flash // logger // redirection } return $this->render('MyTestBundle:Article:new.html.twig', array( 'entity' => $entity, 'form' => $form->createView(), )); } 

Прочтите это внимательно, здесь четко описаны исключения и генерация вывода на веточке. 🙂

http://symfony.com/doc/current/book/controller.html

в дальнейшем,

вы можете использовать этот примитивный метод для получения методов класса:

 print_r(get_class_methods($e)) 

или это довольно печатать ваш объект

 \Doctrine\Common\Util\Debug::dump($e);