Comment savoir quand utiliser une exception existante ou écrire une exception personnalisée?

StackOverflow https://stackoverflow.com/questions/975762

  •  13-09-2019
  •  | 
  •  

Autres conseils

Pourquoi créer des exceptions personnalisées? explique en détail pourquoi assez bon et quand utiliser la coutume exceptions.

Créer un nouveau type quand il pourrait être utile de pouvoir attraper et connaître un cas exceptionnel spécifique est survenue. Est-il utile de savoir qu'un fichier wasnt trouve plutôt qu'une exception IO générique?.

a rédigé un blog entier sur ce sujet que vous pouvez trouver intéressant

En résumé, ne pas écrire une classe d'exception personnalisée à moins que vous attendez réellement quelqu'un à la fois les prises et agir sur le type.

Je pense un bon endroit pour trouver des exceptions existantes seraient dans le fichier d'aide ... si vous regardez l'aide pour la classe Exception, il devrait y avoir une liste des classes dérivées sur la page de présentation.

Comment décider de créer un nouveau (dérivé de Exception), ou hériter de l'existant dépend de ce que les moyens exception.

Comme le dit Jon, si votre code fait un peu de validation sur l'argument à la méthode Create, vous voudrez peut-être faire une exception dérivée de ArgumentException (par exemple peut-être un ArgumentNonExistentEntityException si l'ID spécifié n'existe pas bien que ce soit un peu une bouche pleine).

Si l'exception que vous créez ne pas conceptuellement « inherit » le sens d'une exception qui existe déjà, il suffit de créer sans vergogne une nouvelle pour votre bibliothèque.

Vous allez créer un type d'exception personnalisée pour fournir des informations plus contextuelles ou signification à l'erreur, sinon vous compterez sur l'environnement d'exécution généré types d'exception. Par exemple, une exception comme exception System.DivideByZero peut ne pas être évident quand il bouillonne vers le haut dans une application. Au lieu de cela, vous pouvez créer une exception personnalisée pour fournir plus d'informations contextuelles, en plus de ce qui précède erreur « DivideByZero ».

Pour référence sur les différents temps d'exécution générés exceptions, s'il vous plaît jeter un oeil à l'espace de noms système de MSDN. Ce n'est pas une liste exhaustive puisque les exceptions peuvent être générées par le code natif et aussi des bibliothèques de tiers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top