Je ne suis pas sûr que si des exceptions fonctionnent de la même manière dans chaque langue, mais j'utilise PHP et je me demandais quand je fais quelque chose comme ceci:
if (!$this->connection[0]->query($this->query)) throw new QueryFailedException($this->connection[0]->error,123);
4 Réponses :
Le code d'erreur est un champ pouvant être utilisé pour fournir des informations plus détaillées. Si par exemple, vous avez deux choses qui peuvent générer la même exception, le code pourrait être utilisé pour donner plus de détails. p>
Le code d'erreur était une fonctionnalité utilisée lorsqu'il n'y avait aucune langue orientée objet. La seule chose qui pourrait vous aider à comprendre ce qui s'est mal passé était le code d'erreur. Dans une langue orientée objet, l'objet est votre code d'erreur. À moins que, dans des cas spécifiques, plus d'une chose peut lancer exactement la même erreur et elles sont traitées de différentes manières, déposez-la. De plus, vous fourniriez une explication bien meilleure à qui que ce soit de déboguer votre code si vous avez laissé un message au lieu d'un code d'erreur sans signification, donc si vous avez besoin que l'exception nécessite plus d'informations, remplissez plutôt le champ Message d'erreur. P>
Si vous avez une "source d'erreur" qui fonctionne sur les codes d'erreur et que vous "promouvez" les exceptions, vous pouvez inclure le code d'erreur réel à l'exception. a) Il ne fait pas de mal et b) peut-être que vous ne voulez pas avoir une classe d'exception pour chaque code d'erreur unique pouvant ou non se produire (et pratiquement personne ne s'en soucie dans un système d'exécution). mais en réalité ... qui se soucie? Qui va vraiment les attraper individuellement? Dans presque tous les cas, il n'y aura que de Catch (mysqlexception $ MEX) I> dans le code de l'application et peut-être, peut-être que c'est peut-être à la recherche d'un code spécifique où il n'aboutit que peu de différence pour le codeur s'il y a deux blocs de capture ou un bloc IF / Switch. Maintenant, vous avez beaucoup de classes "mortes" et personne -Except l'analyseur - me soucie d'eux. (D'autre part "Tout ce qui vaut la peine de faire, c'est la peine de trop le faire") et encore une fois, vous voulez probablement inclure le code d'erreur - Pourquoi perdre ces informations même si votre code généralement i> ne l'évalue pas? p> p>
Prenons le erreurs de serveur MySQL en tant que Exemple. Vous pouvez créer une classe pour chacun de ces codes
Et même si vous faites une certaine granularité, je pense que cela a peu de sens à aller au-delà de Par exemple. Avoir une classe d'exception pour chaque sqlstate (cela a du sens? SQLSTATE? Je ne sais pas, juste un exemple) p>
Si vous le pouvez, il est très bon de définir un code d'exception.
C'est si vous ne changez pas votre code pour lancer différentes exceptions en fonction des données que vous obtenez de votre base de données.
Le code d'erreur, dans OOP est le nom de la classe d'exception elle-même, de sorte que vous puissiez interpréter chacun d'eux dans un seul Essayez code> mais avec plusieurs
captures code> clauses.
try {
// code here
} catch (AccessDeniedException $e) {
// do something
} catch (Exception $e) {
// do something else
}
duplicailler possible de Qu'avons-nous besoin de code d'exception pour ? tout scénario de cas d'utilisation?