PHP : les exceptions
Petit rappel de base sur les exceptions en PHP.
Base
La gestion d’exception en PHP se fait comme dans beaucoup de langages de la manière suivante :
Exceptions personnalisées
La classe Exception peut être étendue pour définir nos propres exceptions
Souvent, on utilisera un namespace pour éviter les conflits avec d’autres bibliothèques.
Usage :
Exceptions SPL
La SPL (Standard PHP Library) propose des exceptions “génériques” un peu plus précises que Exception, permettant de catégoriser les erreurs sans avoir à déclarer ses propres exceptions ou à parser bêtement les messages d’exception.
| Exception(s) | Description |
|---|---|
LogicException |
Erreur de logique dans le programme, un bug à corriger dans le code |
↳ BadFunctionCallException↳ BadMethodCallException |
Erreur d’appel (fonction/méthode inexistante, ou appelée avec les mauvais paramètres). |
↳ DomainException |
Valeur “hors domaine” (si la valeur d’un paramètre respecte le type de variable mais pas le domaine de valeurs autorisées) |
↳ InvalidArgumentException |
Valeur ne respectant pas le type attendu |
↳ LengthException |
Valeur ne respectant pas la longueur attendue (chaine de caractère essentiellement ?) |
↳ OutOfRangeException |
Intermédiaire batard entre DomainException (logic) et OutOfBoundsException (runtime) ? |
RuntimeException |
Erreur remontée à l’exécution |
↳ OutOfBoundsException |
Appel à un index/clé (de tableau, par exemple) inexistant dans le contexte |
↳ OverflowException |
Erreur à l’insertion d’un élément dans un conteneur plein |
↳ RangeException |
Valeur “hors domaine” pour un domaine contextuel (spécifique à cette exécution) |
↳ UnderflowException |
Erreur à l’utilisation d’un conteneur s’il est vide |
↳ UnexpectedValueException |
Erreur au retour d’une fonction si la valeur de retour n’est pas gérée |