== Why is this an issue? Exceptions types should provide the following constructors: * `public MyException()` * `public MyException(string)` * `public MyException(string, Exception)` The absence of these constructors can complicate exception handling and limit the information that can be provided when an exception is thrown. == How to fix it === Code examples ==== Noncompliant code example [source,csharp,diff-id=1,diff-type=noncompliant] ---- public class MyException : Exception // Noncompliant: several constructors are missing { public MyException() { } } ---- ==== Compliant solution [source,csharp,diff-id=1,diff-type=compliant] ---- public class MyException : Exception { public MyException() { } public MyException(string message) : base(message) { } public MyException(string message, Exception innerException) : base(message, innerException) { } } ---- == Resources === Documentation * Microsoft Learn: https://learn.microsoft.com/en-us/dotnet/standard/exceptions/how-to-create-user-defined-exceptions[How to create user-defined exceptions] * Microsoft Learn: https://learn.microsoft.com/en-us/dotnet/api/system.exception[Exception Class] * Microsoft Learn: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/creating-and-throwing-exceptions#define-exception-classes[Define exception classes] include::./rspecator.adoc[]