From MSDN, code analysis warning CA1032:
Exception types must implement the following constructors:
- public NewException()
- public NewException(string)
- public NewException(string, Exception)
- protected or private NewException(SerializationInfo, StreamingContext)
I understand the purpose behind the serialization constructor, but is the rationale behind "requiring" the others? Why shouldn't I just define whatever constructors make sense for usage of my exception? What if I never want to throw MyException without passing in a message- why should I define a parameterless constructor? What if I want MyException to have an int property and I only want constructors that initialize that property?