13 votes

try catch n'attrape pas l'exception ?

J'ai le code suivant

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

getSingleResult() jettera NoResultException si aucune ligne n'est trouvée. et il semble que je reçoive toujours l'exception ... le catch ne semble pas fonctionner. pourquoi ?

35voto

Jani Hartikainen Points 23183

Si votre code est namespaced, essayez d'utiliser :

catch (\Doctrine\ORM\NoResultException $e)

Notez la barre oblique inversée devant l'espace de nom Doctrine.

La raison pour laquelle vous devez faire cela est que les espaces de noms de PHP sont relatifs, au lieu d'être absolus.

Si votre code est nommé à My\Namespace et vous essayez d'attraper Doctrine\ORM\NoResultException en réalité, il essaie d'attraper My\Namespace\Doctrine\ORM\NoResultException .

En préfixant l'espace de noms par un \, vous le rendez absolu (similaire aux noms de chemin unix).

3voto

Gayan L Points 186

Il est également possible d'ajouter un

 use Exception;

en haut de la classe et il résoudra le nom de la classe d'exception utilisée dans le bloc try/catch.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X