40 votes

C# - Pourquoi mettre en œuvre des constructeurs d'exception standard ?

De MSDN, avertissement d'analyse de code CA1032 :

Exception types must implement the following constructors: 

*   public NewException() 

*   public NewException(string) 

*   public NewException(string, Exception) 

*   protected or private NewException(SerializationInfo, StreamingContext)

Je comprends l'objectif derrière le constructeur de sérialisation, mais quelle est la raison pour laquelle il faut "exiger" les autres ? Pourquoi ne devrais-je pas définir les constructeurs qui ont un sens pour l'utilisation de mon exception ? Et si je ne veux jamais lancer MonException sans passer par un message, pourquoi devrais-je définir un constructeur sans paramètre ? Et si je veux que MonException ait une propriété int et que je ne veux que des constructeurs qui initialisent cette propriété ?

-1voto

mquander Points 32650

Eh bien, le constructeur qui prend une exception interne est à peu près nécessaire pour rendre une exception personnalisée correctement utilisable. Sans lui, si quelqu'un capturait votre exception, il ne pourrait pas déclencher une exception plus descriptive ou plus appropriée tout en préservant votre exception originale (et les informations qu'elle contient, comme la trace de la pile).

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