Exceptions types should provide the following constructors:
public MyException() public MyException(string) public MyException(string, Exception) protected or private MyException(SerializationInfo, StreamingContext) That fourth constructor should be protected in unsealed classes, and private in sealed classes.
Not having this full set of constructors can make it difficult to handle exceptions.
using System;
namespace MyLibrary
{
public class MyException // Noncompliant: several constructors are missing
{
public MyException()
{
}
}
}
using System;
using System.Runtime.Serialization;
namespace MyLibrary
{
public class MyException : Exception
{
public MyException()
{
}
public MyException(string message)
:base(message)
{
}
public MyException(string message, Exception innerException)
: base(message, innerException)
{
}
protected MyException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}