Quand lanceriez-vous une DomainException en PHP?

j'ai parcouru la liste des Exceptions prédéfinies en PHP et j'ai remarqué le DomainException. Quelqu'un sait ce que DomainException veut dire? Cela signifie-t-il un échec de la validation du modèle de données?

17
demandé sur oscarkuo 2009-07-09 14:05:55

3 réponses

il y a une discussion assez hilarante ici sur la façon dont personne ne semble savoir ce que signifie:

http://bugs.php.net/bug.php?id=47097

à Partir de la fin de ce lien:

domaine signifie ici domaine de données. C'est DomainException doit être lancé chaque fois qu'une valeur n'est pas conforme à une domaine de données valide défini. Exemples:

  • 0 n'est pas dans le domaine de division.
  • Foo n'est pas dans le de domaine pour les jours de semaine.

le premier est différent de out of gamme et semblable, mais vous pourriez utiliser InvalidParameter dans le cas où il est en fait un paramètre à la fonction qui exécute la division. Si c'est un la valeur calculée à l'intérieur de la fonction avant l'exécution de la division et puis une pré-condition de vérifier jette au lieu d'exécuter la division, puis il devient un DomainException.

20
répondu karim79 2016-03-22 21:10:18

La description de RangeException c'est un peu plus utile:

Exception lancée pour indiquer les erreurs de portée pendant l'exécution du programme. Normalement, cela signifie qu'il y avait une erreur arithmétique autre que sous/débordement. C'est la version d'exécution DomainException.

je pense qu'il est applicable aux non-arithmétique trop, par exemple, voir ce commentaire.

Par exemple, si vous vous attendez à une valeur dans la set {'jpeg', 'png', 'gif', 'bmp'} et vous recevez quelque chose comme 'foo', c'est un bon candidat pour un DomainException (logique) / RangeException (à l'exécution). Je suis sûr que vous pouvez penser à beaucoup d'autres cas d'utilisation.



Aussi, je viens de trouver cet article utile, qui fournissent des explications plus approfondies que php.net: Comment utiliser les classes d'exception SPL intégrées pour une meilleure gestion des erreurs

4
répondu Gras Double 2017-07-17 19:30:08

ce genre d'exception devrait être utilisé pour informer sur les erreurs de domaine dans le sens mathématique.

Voir domaine d'une fonction.

par exemple, la fonction racine carrée ne sera définie que pour les nombres positifs (sauf si vous utilisez des nombres complexes...)

3
répondu Greg 2009-07-09 10:11:51