Symfony2调试器停止异常传播并显示错误页面

时间:2016-02-18 16:00:23

标签: php symfony exception-handling

我有一个包含多个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调试器是否拦截了未在同一个类中捕获的所有异常?或者为什么在这种情况下异常消息不会返回到我的前端?

感觉我在这里错过了一个非常愚蠢的细节。

1 个答案:

答案 0 :(得分:1)

如果你没有

use Exception;

在你的代码中,然后正确的try..catch应该是这样的:

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