====== 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