gérer les conditions exceptionnelles pendant l'exécution du programme. Lorsqu'une exception se produit, l'exécution normale du programme est interrompue [...]. Définition
utile n'est pas un bogue du programme. Par contre, ne pas gérer son absence en provoquerait un. Précision Joker Wikipédia (2) https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_d%27exceptions
envoyées par un·e utilisateur·ice ne sont pas valides ? • Quand quelqu’un·e appelle mon API sécurisée sans être authentifié·e ? • Quand on essaye de rembourser un paiement qui est déjà remboursé ?
final » • Maîtrise totale du projet • Connaissance des usages • Besoins très évolutifs • Usages possibles potentiellement variés • Besoin(s) souvent figé(s) ou peu évolutif(s)
librairie de pouvoir traiter n’importe quel cas d’erreur de notre librairie de la manière qui leur conviendra le mieux. ⚠️ Cela ne signifie pas (forcément) créer une exception différente par erreur possible ! ⚠️ Quel est l’objectif ?
pour gérer tous les cas d’erreur. 2) Prévoir une exception (une interface) pour les gouverner toutes. 3) Ne jamais lancer une exception qui ne nous appartient pas.
librairie de pouvoir traiter n’importe quel cas d’erreur de notre librairie de la manière qui leur conviendra le mieux. ⚠️ Cela ne signifie pas (forcément) créer une exception différente par erreur possible ! ⚠️ Quel est l’objectif ?
qu’une exception adaptée existe. Exemples : Doctrine\ORM\EntityNotFoundException Doctrine\ORM\NoResultException Symfony\Component\Validator\Exception\ValidationFailedException Cette option est celle à privilégier ! Exception existante
un cas d’erreur métier anticipé (et si la première option n’est pas possible / suffisante). Exemple : si la clôture d’un compte en banque est impossible car il reste des fonds sur le compte, on peut créer une exception « NonEmptyBankAccountException ». ⚠️ Cette option n’est pas le choix par défaut ! ⚠️ Exception spécifique
privilégier si vous n’avez pas besoin d’une exception spécifique ET que vous n’avez pas trouvé d’exception tierce correspondant à votre cas d’erreur. Exception PHP https://www.php.net/manual/fr/reserved.exceptions.php & https://www.php.net/manual/fr/spl.exceptions.php
qui ne nous appartiennent pas si c’est pertinent 2) Créer uniquement les exceptions nécessaires pour gérer les cas d’erreur prévus 3) Ne pas tout catcher => Les erreurs 500, c’est bien aussi !
projet « final » GRA-NU-LA-RI-TÉ • Prévoir suffisamment d’exceptions pour gérer tous les cas d’erreur • Prévoir une exception (ou une interface) pour les gouverner toutes • Ne jamais lancer une exception qui ne nous appartient pas PRAG-MA-TIS-ME • Réutiliser des exceptions qui ne nous appartiennent pas si c’est pertinent • Créer uniquement les exceptions nécessaires pour gérer les cas d’erreur prévus • Ne pas tout catcher => Les erreurs 500, c’est bien aussi !