CA2201: 予約された例外の種類を発生させません
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
分類 |
Microsoft.Usage |
互換性に影響する変更点 |
あり |
原因
メソッドによって、汎用的すぎる例外の種類、またはランタイムによって予約されている例外の種類が発生しています。
規則の説明
次の例外の種類は汎用的すぎて、ユーザーに与える情報が不十分です。
次の例外の種類は共通言語ランタイムによって予約済みであり、共通言語ランタイムのみがスローします。
汎用的な例外をスローしないでください
ライブラリまたはフレームワークの Exception や SystemException などの汎用的な例外の種類をスローする場合、コンシューマーは、処理方法のわからない不明な例外を含むすべての例外をキャッチするよう強制されます。
代わりに、フレームワーク内の既存の派生型をスローするか、または Exception から派生する独自の型を作成してください。
特定の例外をスローします
次の表は、パラメーターおよびパラメーターの検証時にスローする例外を示しています。プロパティの set アクセサーの値パラメーターも記載されています。
パラメーターの説明 |
Exception |
---|---|
null 参照 |
|
有効値の範囲外 (コレクションまたは一覧のインデックスなど) |
|
無効な enum 値 |
|
メソッドのパラメーターの仕様に一致していない書式 (ToString(String) の書式文字列など) が含まれます。 |
|
それ以外の場合は無効 |
オブジェクトの現在の状態に対して操作が無効な場合 InvalidOperationException をスローします。
破棄されたオブジェクトで操作が実行される場合 ObjectDisposedException をスローします。
操作がサポートされない場合 (読み取り用として開かれたストリームのオーバーライドされた Stream.Write など) NotSupportedException をスローします。
変換によってオーバーフローが発生する場合 (明示的なキャスト演算子のオーバーロードなど) OverflowException スローします。
その他のすべての状況では、Exception から派生する独自の型の作成を検討し、その型をスローしてください。
違反の修正方法
この規則違反を修正するには、スローされる例外の種類を、予約済みの種類ではない特定の種類に変更します。
警告を抑制する状況
この規則による警告は抑制しないでください。