使用Twig异常控制器处理致命错误

时间:2014-06-23 16:56:33

标签: symfony fatal-error

我正在研究Symfony项目,我正在尝试为生产环境创建用户友好的错误页面。为此,我已覆盖twig.exception_controller参数。该过程在Symfony Documentation中有所描述。在覆盖异常控制器时,我能够为没有路由的实例创建自定义错误页面,或者抛出未捕获的异常。我无法让这个与致命错误一起工作,这就是我的问题所在。

是否有可能在Symfony中捕获/处理致命错误?发生致命错误时,我没有尝试继续运行应用程序(as the answerer of this question suggests)。我只想显示一个错误页面,除了标准的一个有函数调用堆栈跟踪。

我尝试使用register_shutdown_function设置关闭功能,但这并不会阻止显示默认错误页面(带有堆栈跟踪)。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将可能失败的进程放入try块

try {
  // assert this fails because you have some buggy code here
  $foos=$fooService->getFoosByDateTime(); 

}catch(\Exception $e){
  //you can catch the exception 
  $exceptionMessage= $e->getMessage();
  $this->redirect("your_custom_route_to_error_page",{"error":$exceptionMessage});
}

答案 1 :(得分:0)

您可以启用捕获致命错误并将其转换为异常,如调试组件中所示。

//如果我记得正确的Symfony Fullstack已经这样做了 http://symfony.com/doc/current/components/debug/introduction.html

然后你可以编写一个自己的异常处理程序,它以用户友好的方式捕获和处理异常。