Из MSDN, предупреждение анализа кода CA1032:
Exception types must implement the following constructors: <ul>
<li>public NewException()
<li>public NewException(string)
<li>public NewException(string, Exception)
<li>protected or private NewException(SerializationInfo, StreamingContext)</ul>
Я понимаю цель конструктора сериализации, но есть ли смысл «требовать» других? Почему я не должен просто определять конструкторы, которые имеют смысл для использования моего исключения? Что если я никогда не захочу генерировать MyException без передачи сообщения - зачем мне определять конструктор без параметров? Что, если я хочу, чтобы MyException имел свойство int, и мне нужны только конструкторы, которые инициализируют это свойство?