我有一个包含多个Symfony服务的设置,这些服务都会在任何错误时抛出异常。
我有控制器充当这些服务的包装器。
我的一个包装控制器(我的前端向其发送请求)中的操作可能如下所示:
/**
* @Route("/someroute", name="some_route")
*/
public function myServiceWrapperFunctionAction(Request $request) {
try {
$this->get("myservice")->someFunctionThatThrowsException();
} catch(Exception $e) {
// This never happens when an exception is thrown from the service
return new Response($e->getMessage());
}
}
但是,我似乎从未到达 catch 块,而是触发调试器,就像 try-catch 甚至不存在一样。
Symfony调试器是否拦截了未在同一类中捕获的所有异常?或者为什么在这种情况下没有将异常消息返回到我的前端?
感觉我在这里错过了一个非常愚蠢的细节。
如果你没有
use Exception;
在您的代码中,然后适当地尝试。捕获应如下所示:
try {
$this->get("myservice")->someFunctionThatThrowsException();
} catch('Exception $e) {
// This never happens when an exception is thrown from the service
return new Response($e->getMessage());
}
因为只是Exception
会要求自动加载器加载'Your'Controller'Namespace'Exception
而不是'Exception