更新 : 2007 年 11 月
TypeName |
ExceptionsShouldBePublic |
CheckId |
CA1064 |
カテゴリ |
Microsoft.Design |
互換性に影響する変更点 |
なし |
原因
パブリックでない例外が System.Exception、System.SystemException または System.ApplicationException から直接派生しています。
規則の説明
内部例外は、その内部スコープ内でのみ認識されます。内部スコープの外側にある例外は、基本例外を使用しなければキャッチできません。内部例外が T:System.Exception、T:System.SystemException、または T:System.ApplicationException を継承している場合、外部コードはその例外の処理に関する十分な情報を取得できません。
しかし、外部コードに後で内部例外の基本例外として使用できるパブリック例外があれば、それ以降に基本例外を使用して高度な処理を実行できると考えることは理にかなっています。パブリック例外は、T:System.Exception、T:System.SystemException、または T:System.ApplicationException が提供するより多くの情報を保持します。
違反の修正方法
例外をパブリックにするか、System.Exception、System.SystemException、または System.ApplicationException 以外のパブリック例外から内部例外を派生させます。
警告を抑制する状況
プライベート例外がその内部スコープ内でキャッチされることが確実である場合は、この規則によるメッセージを抑制してください。
使用例
この規則に違反する 3 つの例を次に示します。