74 votes

Dois-je dériver des exceptions personnalisées à partir d'Exception ou ApplicationException dans .NET?

Quelle est la meilleure pratique lors de la création de vos classes d’exception dans une solution .NET: Dériver de System.Exception ou de System.ApplicationException ?

63voto

fryguybob Points 2886

Selon Jeffery Richter dans le livre Framework Design Guidelines:

System.ApplicationException est une classe qui ne devrait pas faire partie du framework .NET.

Il était censé avoir une signification en ce sens que vous pourriez potentiellement capturer "toutes" les exceptions d'application, mais le modèle n'a pas été suivi et n'a donc aucune valeur.

29voto

Blorgbeard Points 38991

Même MSDN dit maintenant à ignorer ApplicationException:

Si vous êtes à la conception d'une application qui a besoin de créer sa propre des exceptions, il est conseillé de tirer personnalisé des exceptions à l'Exception classe. Il a été à l'origine pensé que personnalisé exceptions doivent dériver de le ApplicationException classe; cependant, dans la pratique, cela n'a pas été trouvé à ajouter une valeur significative. Pour plus d'informations, consultez les Meilleures Pratiques pour la gestion des Exceptions.

http://msdn.microsoft.com/en-us/library/system.applicationexception.aspx

18voto

Konrad Rudolph Points 231505

ApplicationException considéré comme inutile - un argument fort et critique.

13voto

rp. Points 9997

Les auteurs du cadre jugent eux-mêmes ApplicationException sans valeur:

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

avec un bon suivi ici:

http://blogs.msdn.com/kcwalina/archive/2006/07/05/657268.aspx

Dans le doute, j'ai suivi leur livre Cadre des lignes Directrices de Conception.

http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756

Le sujet du blog est discuté plus loin.

rp

2voto

Craig Points 2871

Oui, Konrad a raison.

Sur une note connexe: une autre chose jugée utile (ou "meilleure pratique") mais qui ne l’est vraiment pas est la mise en œuvre de ICloneable .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X