Подтвердить что ты не робот

Попытаться поймать не исключение?

У меня есть код, как показано ниже

try {
  $user = $query->getSingleResult();
} catch (Doctrine\ORM\NoResultException $e) {
  return null;
} catch (Exception $e) {
  return null;
}

getSingleResult() будет бросать NoResultException, если строки не найдены. и кажется, что я все еще получаю исключение... уловка, похоже, не работает. почему это?

4b9b3361

Ответ 1

Если ваш код содержит имена, попробуйте использовать:

catch (\Doctrine\ORM\NoResultException $e)

Обратите внимание на обратную косую черту перед пространством имен Doctrine.

Причина, по которой вам нужно это сделать, - это то, что пространства имен PHP являются относительными, а не абсолютными.

Если ваш код с именами помещается в My\Namespace, и вы пытаетесь поймать Doctrine\ORM\NoResultException, на самом деле он пытается поймать My\Namespace\Doctrine\ORM\NoResultException.

Префикс пространства имен с помощью\вы сделаете его абсолютным (аналогично именам unix)

Ответ 2

Можно также добавить

 use Exception;

В верхней части класса и будет разрешено имя класса исключения, используемое в блоке try/catch.