Article mis à jour le : 05-05-2022
Un petit rappel sur la bonne gestion des boucles try catchDans la lignée de cet article sur les différents types de valeur retournées en PHP, il est intéressant de rappeler que les boucles try et catch doivent être utilisées, et ce dans tous les langages, de manière intelligente.
En effet, il est courant de voir qu'une méthode A qui peut potentiellement lever une exception, englobe son traitement dans une boucle try{} catch{} , et que la méthode B, qui appelle cette méthode A, englobe elle aussi ce traitement.
Soyons direct: cela est inutile. Comme le disent les anglophones, les erreurs "bubblent" - remontent - automatiquement vers la couche appelante. Donc quand vos méthodes doivent jeter des exceptions, laissez le code appelant la traiter, mettre des try - catch partout ne servira à rien. De plus, la plupart des IDE vous préviendront que la code que vous appelez peut potentiellement lever une erreur, donc inutile de "tartiner" votre code.
Par contre, afin de bien faire les choses, n'hésitez pas à jeter des exceptions manuellement. Exemple:
Dans un repository d'une entité "Livre", vous allez créer une méthode getByCategory($intCateg);. Vous l'avez deviné, elle doit vous retourner une collection d'entités de type "Livre". Il est encore trop courant de voir des types de retour "mixed": en clair, si votre méthode trouve des résultats, elle retournera la collection, sinon elle retournera false. Ce n'est pas une bonne approche. Reprenons le cas de PHP, qui est entré dans la "modernité" depuis plus de dix ans maintenant: vous devez jeter manuellement une exception si vous ne trouvez pas de résultat.
Comme il ne s'agit pas de la seule exception qui puisse être levée, voici donc le code appelant: