为什么Symfony2不捕捉异常


Why Symfony2 dont catch exceptions

我有一个存储库

class TurnoRepository extends EntityRepository
{
    public function findTurnoActivo()
    {
        $q = $this
            ->createQueryBuilder('t')
            ->where('t.activo = :activo')
            ->setParameter('activo', true)
            ->getQuery();
        return $q->getSingleResult();
    }
}

这个方法抛出一个NoResultException,但如果我试图在我的控制器中捕获

private function obtenerTurno()
{
    $em = $this->getDoctrine()->getEntityManager();
    $turno = null;
    try {
        $turnoActivo = $em->getRepository('MyBundle:Turno')->findTurnoActivo();
    } catch (NoResultException $e) {
        return false;
    }
    return $turno;

}

我总是在我的页面上得到500内部服务器错误

Symfony2代码是按名称空间命名的,因此您必须为类NoResultException添加正确的名称空间,请尝试使用:

catch ('Doctrine'ORM'NoResultException $e)

注意Doctrine名称空间前面的反斜杠,或者使用use导入NoResultException类。

如果不想在控制器中捕获NoResultException,则可以使用$q->getOneOrNullResult();