Quelles sont les meilleures pratiques pour créer ma propre exception personnalisée?

Suite à une question précédente concernant les exceptions, quelles sont les meilleures pratiques pour créer une exception personnalisée dans .NET?

Plus spécifiquement, devriez-vous hériter de System.Exception, System.ApplicationException ou d’une autre exception de base?

Hériter de System.Exception . System.ApplicationException est inutile et les directives de conception indiquent ” Ne lancez pas et ne System.ApplicationException de System.ApplicationException “.

Voir http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

Dans l’EDI C #, tapez ‘exception’ et appuyez sur TAB. Cela s’étendra pour vous aider à écrire un nouveau type d’exception. Il y a des commentaires avec des liens vers des discussions sur les pratiques d’exception.

Personnellement, je suis un grand fan de la création de nombreuses petites classes, qui vont jusqu’aux types d’exceptions. Par exemple, en écrivant la classe Foo, je peux choisir entre:

  1. throw new Exception("Bar happened in Foo");
  2. throw new FooException("Bar happened");
  3. throw new FooBarException();

 class FooException : Exception { public FooException(ssortingng message) ... } 

et

 class FooBarException : FooException { public FooBarException() : base ("Bar happened") { } } 

Je préfère la 3ème option, car je la considère comme une solution OO.

Il y a un extrait de code pour cela. Utiliser ça. De plus, vérifiez votre parsing de code par la suite. l’extrait laisse de côté l’un des constructeurs à implémenter.

Je pense que la chose la plus importante à retenir lors de la gestion des exceptions à tous les niveaux (création, coutume, lancer, capture) est que les exceptions ne sont que pour des conditions exceptionnelles.

L’exception de base d’où toutes les autres exceptions héritent est System.Exception, et c’est ce que vous devriez hériter, à moins bien sûr que vous utilisiez des choses comme, par exemple, les messages par défaut d’une exception plus spécifique.