我有2个控制器动作,一个通过render(controller(...))函数呈现在另一个的树枝模板中。如果我在子动作中抛出一个异常,它只会在DEV模式中捕获,而不是在PRODuction中捕获,有什么想法为什么以及如何避开它?PHP/Symfony - 为什么使用Twig呈现的控制器异常不会仅在生产模式中捕获?
DefaultController.php
/**
* @Route("/test/child", name="test_child")
*/
public function childAction(Request $request)
{
throw new \Exception($request->getRequestUri());
return $this->render("child.html.twig");
}
/**
* @Route("/test/parent", name="test_parent")
*/
public function parentAction(Request $request)
{
try {
return $this->render("parent.html.twig");
} catch(\Exception $e)
{
die("got it!");
}
}
child.html.twig
Child
parent.html.twig
Parent
<br>
{{ render(controller("WebBundle:Pages:child")) }}
结果:
您是否尝试过使用自己的异常处理程序(使用事件侦听器)? – eRIZ
'app.php'已禁用调试模式? – tom10271
它可能是因为调试模式而发生的,这意味着你不应该用这种方式处理异常!在当然的情况下,如上所述,您需要查找异常处理程序 –