Php 为什么Symfony2不捕获异常

Php 为什么Symfony2不捕获异常,php,symfony,exception-handling,Php,Symfony,Exception Handling,我有一个存储库 class TurnoRepository extends EntityRepository { public function findTurnoActivo() { $q = $this ->createQueryBuilder('t') ->where('t.activo = :activo') ->setParameter('activo', true

我有一个存储库

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)

注意条令名称空间前面的反斜杠,或者使用
use
导入
NoResultException
类,您可以使用
$q->getOneOrNullResult()
如果不想在控制器中捕获
NoResultException

dev
环境中运行应用程序,查看确切的错误消息。是的,我忘记了
使用条令\ORM\NoResultException对于业务逻辑,我更喜欢例外