我有一个绑定到kernel.request
事件的内核侦听器,在某些情况下它可以抛出PHP RuntimeException
。而在dev-env中,Symfony捕捉到异常并向我显示"致命错误"的Twig错误页面,而在prod-env中,我只得到一个空页面。这是一个200 OK
HTTP响应,但没有内容。
我想实现的是显示一个自定义的错误页面,即"错误的应用程序配置",这实际上对试图访问该页面的最终用户有任何用处。这是一个致命的错误,但它最终可能发生。
我尝试在kernel.exception
事件上执行的异常侦听器中捕获它,但它似乎没有捕获"致命错误"异常。
以下是我迄今为止尝试过的
- kernel.exception事件侦听器
- 抛出一个"正常"的
Exception
(可能是这样)。似乎从侦听器内部引发的异常也不会引发kernel.exception事件
有什么建议吗?
好吧,我似乎找到了答案。
问题在于服务定义的顺序。当您标记一个服务以将其方法之一绑定到kernel.exception
事件时,当然,在向任何其他侦听器抛出异常之前,需要在服务的配置中声明它。或者任何其他地方,事实上。