フレームワーク設計ガイドラインと FxCop ルールから。:
1.カスタム例外には、例外で終わる名前が必要です
class MyException : Exception
2.例外は公開する必要があります
public class MyException : Exception
3. CA1032: 例外は標準コンストラクターを実装する必要があります。
- パラメーターなしのパブリック コンストラクター。
- 1 つの文字列引数を持つパブリック コンストラクター。
- 1 つの文字列と Exception を持つパブリック コンストラクター (別の Exception をラップできるため)。
型がシールされていない場合は保護され、型がシールされている場合はプライベートなシリアル化コンストラクター。MSDNに基づく:
[Serializable()]
public class MyException : Exception
{
public MyException()
{
// Add any type-specific logic, and supply the default message.
}
public MyException(string message): base(message)
{
// Add any type-specific logic.
}
public MyException(string message, Exception innerException):
base (message, innerException)
{
// Add any type-specific logic for inner exceptions.
}
protected MyException(SerializationInfo info,
StreamingContext context) : base(info, context)
{
// Implement type-specific serialization constructor logic.
}
}
また
[Serializable()]
public sealed class MyException : Exception
{
public MyException()
{
// Add any type-specific logic, and supply the default message.
}
public MyException(string message): base(message)
{
// Add any type-specific logic.
}
public MyException(string message, Exception innerException):
base (message, innerException)
{
// Add any type-specific logic for inner exceptions.
}
private MyException(SerializationInfo info,
StreamingContext context) : base(info, context)
{
// Implement type-specific serialization constructor logic.
}
}