如何在symfony 2中捕获异常?

 一粒小小无名砂_741 发布于 2023-02-13 14:25

如何在控制器中捕获异常并在Symfony 2中显示flash消息?

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

1 个回答
  • 您应该注意可能引发的异常:

    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 e. g. 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(),
      ));
    }
    

    2023-02-13 14:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有