如何处理symfony 2中特定控制器的异常

时间:2016-09-16 11:36:56

标签: symfony

我有一个处理API请求的控制器。现在我需要单独处理该控制器的任何异常,即转换为json / xml格式,覆盖消息或添加任何细节。在我的情况下,全局处理异常并不合适。

今天我有一个KernelEvent订阅者处理kernel.exception并检测当前控制器(Gist):

public function processApiException(GetResponseForExceptionEvent $event)
{
    $controllerName = $this->container->get('controller_name_converter');
    $resolver = new ControllerResolver($this->container, controllerName);
    $controller = $resolver->getController($event->getRequest());

    if ($contoller && $controller[0] instanceof JsonApiControllerInterface) {
        $this->handleApiExceptionEvent($event);
    }
}

所以,问题是:

  • 以这种方式处理特定控制器异常是一个很好的解决方案吗?
  • 除了使用ControllerResolver之外,还有其他方法可以获取当前控制器(来自GetResponseForExceptionEvent)吗?

1 个答案:

答案 0 :(得分:0)

我知道和使用的方式是

  1. 在Response中发送错误代码,双方必须知道代码的含义。

  2. 在Response中返回一个像这样的json:

    function mn_func($atts){ echo "<p> Testing </p>"; } add_shortcode('mn','mn_func');