====== Exceptions en PHP ======
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 :
try {
throw new Exception('message for this exception');
} catch (Exception $e) {
// somehow handle the error here
}
===== Exceptions personnalisées =====
La classe ''Exception'' peut être étendue pour définir nos propres exceptions
class CustomException extends Exception {}
===== 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.
* [[http://us3.php.net/manual/en/class.logicexception.php|LogicException]] : erreur de logique dans le programme, un bug à corriger dans le code
* [[http://us3.php.net/manual/en/class.badfunctioncallexception.php|BadFunctionCallException]] / [[http://us3.php.net/manual/en/class.badmethodcallexception.php|BadMethodCallException]] : erreur d'appel (fonction/méthode inexistante, ou appelée avec les mauvais paramètres).
* [[http://us3.php.net/manual/en/class.domainexception.php|DomainException]] : valeur "hors domaine" (si la valeur d'un paramètre respecte le type de variable mais pas le domaine de valeurs autorisées)
* [[http://us3.php.net/manual/en/class.invalidargumentexception.php|InvalidArgumentException]] : valeur ne respectant pas le type attendu
* [[http://us3.php.net/manual/en/class.lengthexception.php|LengthException]] : valeur ne respectant pas la longueur attendue (chaine de caractère essentiellement ?)
* [[http://us3.php.net/manual/en/class.outofrangeexception.php|OutOfRangeException]] : intermédiaire batard entre DomainException (logic) et OutOfBoundsException (runtime) ?
* [[http://us3.php.net/manual/en/class.runtimeexception.php|RuntimeException]] : erreur remontée à l'exécution
* [[http://us3.php.net/manual/en/class.outofboundsexception.php|OutOfBoundsException]] : appel à un index/clé (de tableau, par exemple) inexistant dans le contexte
* [[http://us3.php.net/manual/en/class.overflowexception.php|OverflowException]] : erreur à l'insertion d'un élément dans un conteneur plein
* [[http://us3.php.net/manual/en/class.rangeexception.php|RangeException]] : valeur "hors domaine" pour un domaine contextuel (spécifique à cette exécution)
* [[http://us3.php.net/manual/en/class.underflowexception.php|UnderflowException]] : erreur à l'utilisation d'un conteneur s'il est vide
* [[http://us3.php.net/manual/en/class.unexpectedvalueexception.php|UnexpectedValueException]] : erreur au retour d'une fonction si la valeur de retour n'est pas gérée