注
このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。
このセクションでは、フレームワークによって提供される標準的な例外とその使用方法の詳細について説明します。 リストは決して網羅的ではありません。 その他の Framework 例外の種類の使用方法については、.NET Framework リファレンス ドキュメントを参照してください。
例外と SystemException
❌ System.ExceptionやSystem.SystemExceptionをスローしないでください。
❌ 再スローする予定がない限り、フレームワーク コードで System.Exception
や System.SystemException
をキャッチしないでください。
❌ 最上位の例外ハンドラーを除き、 System.Exception
または System.SystemException
をキャッチしないようにします。
ApplicationException
❌ ApplicationExceptionからスローまたは派生しないでください。
無効な操作例外 (InvalidOperationException)
✔️ オブジェクトが不適切な状態にある場合は、 InvalidOperationException をスローします。
ArgumentException、ArgumentNullException、および ArgumentOutOfRangeException
✔️ 無効な引数がメンバーに渡された場合は、 ArgumentException またはそのサブタイプの 1 つをスローします。 該当する場合は、最も派生した例外の種類を優先します。
✔️ ArgumentException
のいずれかのサブクラスをスローするときに、ParamName
プロパティを設定します。
このプロパティは、例外がスローされる原因となったパラメーターの名前を表します。 このプロパティは、コンストラクターのオーバーロードのいずれかを使用して設定できることに注意してください。
✔️ プロパティ セッターの暗黙的な値パラメーターの名前には、 value
を使用してください。
NullReferenceException、IndexOutOfRangeException、AccessViolationException
❌ パブリックに呼び出し可能な API が NullReferenceException、 AccessViolationException、または IndexOutOfRangeExceptionを明示的または暗黙的にスローすることを許可しないでください。 これらの例外は、実行エンジンによって予約およびスローされ、ほとんどの場合、バグを示します。
これらの例外がスローされないように引数チェックを実行します。 これらの例外をスローすると、時間の経過と同時に変更される可能性があるメソッドの実装の詳細が公開されます。
StackOverflowException
❌ StackOverflowExceptionを明示的にスローしないでください。 例外は CLR によってのみ明示的にスローされる必要があります。
❌
StackOverflowException
をキャッチしないでください。
任意のスタック オーバーフローが発生しても一貫性を保つマネージド コードを記述することはほとんど不可能です。 CLR のアンマネージ部分は、任意のスタック オーバーフローからバックアウトするのではなく、プローブを使用してスタック オーバーフローを適切に定義された場所に移動することで一貫性を保ちます。
OutOfMemoryException (メモリ不足例外)
❌ OutOfMemoryExceptionを明示的にスローしないでください。 この例外は、CLR インフラストラクチャによってのみスローされます。
ComException、SEHException、ExecutionEngineException
❌ COMException、ExecutionEngineException、およびSEHExceptionを明示的にスローしないでください。 これらの例外は、CLR インフラストラクチャによってのみスローされます。
Portions © 2005, 2009 Microsoft Corporation. 無断転載を禁じます。
フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。