Je n'ai pas encore pu trouver une liste de toutes les sous-classes d'exception intégrées en PHP. Je préfère utiliser celles intégrées quand elles ont du sens, avant de créer mes propres sous-classes d'exceptions.
Par exemple, je sais que InvalidArgumentException existe, mais il ne semble rien de comparable à NullPointerException de Java.
Quelqu'un a-t-il ou peut-il créer un lien vers une liste des sous-classes d'exceptions disponibles en PHP?
PHP 5 a deux exceptions intégrées
Les bibliothèques au sein de PHP ont leurs propres exceptions intégrées
DOMException
Les opérations DOM déclenchent des exceptions dans des circonstances particulières, c'est-à-dire lorsqu'une opération est impossible à effectuer pour des raisons logiques.IntlException
sa classe est utilisée pour générer des exceptions lorsque des erreurs se produisent dans les fonctions intl. Ces exceptions ne sont générées que lorsque intl.use_exceptions est activé.PharException
Lancé lors de l'utilisation de la classe PharReflectionException
Lancé lors de l'utilisation des classes ReflectionSPL inclut quelques-unes de ses propres exceptions intégrées :
BadFunctionCallException
Un rappel fait référence à une fonction non définie ou si certains arguments sont manquants.BadMethodCallException
Un rappel fait référence à une méthode non définie ou si certains arguments sont manquants.DomainException
Une valeur n'adhère pas à un domaine de données valide défini.InvalidArgumentException
Les arguments passés n'étaient pas valides.LengthException
Le paramètre dépasse la longueur autorisée (utilisé pour les chaînes, les tableaux, la taille du fichier, etc.).LogicException
Une erreur générique s'est produite dans la logique du programme.OutOfBoundsException
Un index illégal a été demandé.OutOfRangeException
Un index illégal a été demandé. Cela représente des erreurs qui devraient être détectées au moment de la compilation.OverflowException
Ajout d'un élément à un conteneur complet.RangeException
Indique les erreurs de plage lors de l'exécution du programme. Normalement, cela signifie qu'il y avait une erreur arithmétique autre que sous/dépassement.RuntimeException
Une erreur qui ne peut être trouvée qu'à l'exécution se produit.UnderflowException
Exécution d'une opération non valide sur un conteneur vide, telle que la suppression d'un élément.UnexpectedValueException
Une valeur inattendue a été reçue (c'est-à-dire comme résultat d'une valeur renvoyée par un appel de méthode).PHP 7 introduit de nouvelles exceptions, y compris des erreurs capturables. Les nouvelles exceptions incluent:
Throwable
est l'interface de base pour tout objet qui peut être lancé via une instruction throw dans PHP 7, y compris les erreurs et les exceptions).Error
est la classe de base pour toutes les erreurs internes PHP.AssertionError
est levée lorsqu'une assertion faite via assert () échoue.ParseError
est levée lorsqu'une erreur se produit lors de l'analyse PHP, comme lorsque eval () est appelé.TypeError
Il existe trois scénarios où une TypeError peut être levée. Le premier est celui où le type d'argument transmis à une fonction ne correspond pas au type de paramètre déclaré correspondant. La seconde est celle où une valeur renvoyée par une fonction ne correspond pas au type de retour de fonction déclaré. Le troisième est où un nombre non valide d'arguments est passé à une fonction intégrée PHP (mode strict uniquement).ArithmeticError
est émis lorsqu'une erreur se produit lors de l'exécution d'opérations mathématiques. Dans PHP 7.0, ces erreurs incluent la tentative d'effectuer un décalage de bits d'un montant négatif et tout appel à intdiv () qui entraînerait une valeur en dehors des limites possibles d'un entier.DivisionByZeroError
est levé lorsqu'une tentative est faite pour diviser un nombre par zéro.ArgumentCountError
est levé lorsque trop peu d'arguments sont passés à une fonction ou une méthode définie par l'utilisateur.PHP 7.3 introduit des exceptions JSON:
JsonException
est levé lorsque json_encode()
et json_decode()
rencontrent une erreur.Voici un graphique qui illustre la nouvelle hiérarchie introduite dans PHP 7:
\Throwable
├── \Exception (implements \Throwable)
| |── \DOMException (extends \Exception)
| ├── \IntlException (extends \Exception)
| ├── \JsonException (extends \Exception)
| |── \PharException (extends \Exception)
| |── \ReflectionException (extends \Exception)
│ ├── \LogicException (extends \Exception)
│ │ ├── \BadFunctionCallException (extends \LogicException)
│ │ │ └── \BadMethodCallException (extends \BadFunctionCallException)
│ │ ├── \DomainException (extends \LogicException)
│ │ ├── \InvalidArgumentException (extends \LogicException)
│ │ ├── \LengthException (extends \LogicException)
│ │ └── \OutOfRangeException (extends \LogicException)
│ └── \RuntimeException (extends \Exception)
│ ├── \OutOfBoundsException (extends \RuntimeException)
│ ├── \OverflowException (extends \RuntimeException)
│ ├── \RangeException (extends \RuntimeException)
│ ├── \UnderflowException (extends \RuntimeException)
│ └── \UnexpectedValueException (extends \RuntimeException)
└── \Error (implements \Throwable)
├── \AssertionError (extends \Error)
├── \ParseError (extends \Error)
└── \TypeError (extends \Error)
└── \ArgumentCountError (extends \TypeError)
└── \ArithmeticError (extends \Error)
└── \DivisionByZeroError extends \ArithmeticError)
En fait, j'ai réussi à les trouver maintenant que je suis tombé en panne et que j'ai demandé.
Techniquement, cela ressemble à PHP n'a que 2 exceptions intégrées: http://www.php.net/manual/en/reserved.exceptions.php
Et le SPL en définit plusieurs autres: http://www.php.net/manual/en/spl.exceptions.php
Avec une explication de leur hiérarchie: http://www.php.net/~helly/php/ext/spl/classException.html
Mise à jour
Le lien ci-dessus est mort, c'était un diagramme de la hiérarchie d'exception de base PHP. Je n'ai pas pu trouver l'original, mais voici un remplacement:
Trouvé à l'origine sur http://fossies.org/dox/php-5.2.17/classException.html