次の方法で共有


CA2201:予約された例外の種類を発生させません

プロパティ
ルール ID CA2201
Title 予約された例外の種類を発生させません
[カテゴリ] 使用方法
修正が中断ありか中断なしか あり
.NET 8 では既定で有効 いいえ

原因

メソッドによって、一般的すぎる、またはランタイムによって予約されている種類の例外が発生します。

規則の説明

次の例外の種類は、一般的すぎて、ユーザーに十分な情報を提供できません。

次の例外の種類は予約されており、共通言語ランタイムによってのみスローされる必要があります。

一般的な例外をスローしない

ライブラリまたはフレームワーク内で ExceptionSystemException などの一般的な例外の種類をスローすると、コンシューマーは、処理方法がわからない不明な例外も含め、すべての例外をキャッチすることを強制されます。

代わりに、フレームワークに既に存在する派生型をスローするか、Exception から派生する独自の型を作成します。

特定の例外をスローする

次の表は、さまざまな種類の無効な引数に対して、プロパティの set アクセサーの value パラメーターなど、スローする例外を示しています。

引数が無効です 例外
null 参照 ArgumentNullException
許容範囲の値 (コレクションまたはリストに対するインデックスなど) 以外 ArgumentOutOfRangeException
無効な enum InvalidEnumArgumentException
メソッドのパラメーター仕様 (ToString(String) に対する書式文字列など) を満たさない書式が含まれている FormatException
それ以外の無効 ArgumentException

次の表は、さまざまな種類の無効な操作に対してスローする例外を示しています。

無効な操作 例外
操作がオブジェクトの現在の状態に対して無効です。 InvalidOperationException
操作が破棄されたオブジェクトに対して実行されました。 ObjectDisposedException
操作がサポートされていません (読み取りのために開かれたストリームでのオーバーライドされた Stream.Write など)。 NotSupportedException
変換によってオーバーフローが発生します (明示的なキャスト演算子のオーバーロードなど)。 OverflowException

その他のすべての状況では、Exception から派生する独自のタイプを作成することを検討し、それをスローします。

違反の修正方法

この規則の違反を修正するには、スローされる例外の型を、予約済みの型ではない特定の型に変更します。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。