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é ?