如何在Symfony2中捕获ParamConverter异常?

时间:2013-11-29 09:54:06

标签: php exception symfony doctrine-orm routes

以下是我得到的例外情况:

  

虽然预计至少有一行,但未找到查询结果。

当在数据库中找不到用户标识时,我基本上得到了该异常。 以下是我的路线:

localhost/../user/18

和我控制器中的代码:

public function showAction(User $user){
    // .. 
}

我知道我可以使用内核事件异常来处理这个问题,但有没有更简单的方法来捕获ParamConverter生成的异常?

2 个答案:

答案 0 :(得分:16)

在某些情况下,如果找不到对象,则手动抛出异常很有用。如果通过向param添加默认值找不到实体,则可以告诉操作跳过抛出异常。

示例:

public function showUser(User $user = null) {
    if (empty($user)) {
        throw new CustomExceptionYouWant();
    }
    ...
}        

答案 1 :(得分:2)

您可以通过实现ParamConverterInterface创建用户ParamConverter,并在其中创建可用作自定义异常或进行其他处理的方法。

这是您想要创建的Custom ParamConverter

的一个很好的例子