標準例外型の使用Using Standard Exception Types

このセクションでは、フレームワークと、その使用状況の詳細によって提供される標準の例外について説明します。This section describes the standard exceptions provided by the Framework and the details of their usage. 一覧は完全ではではありません。The list is by no means exhaustive. その他のフレームワーク例外の種類の使用状況の .NET Framework のリファレンス ドキュメントを参照してください。Please refer to the .NET Framework reference documentation for usage of other Framework exception types.

例外と SystemExceptionException and SystemException

X DO NOT スローSystem.ExceptionまたはSystem.SystemExceptionです。X DO NOT throw System.Exception or System.SystemException.

X DO NOT キャッチSystem.ExceptionまたはSystem.SystemExceptionframework コードで再スローする場合を除き、します。X DO NOT catch System.Exception or System.SystemException in framework code, unless you intend to rethrow.

X AVOID キャッチSystem.ExceptionまたはSystem.SystemException、トップレベルの例外ハンドラーでは可します。X AVOID catching System.Exception or System.SystemException, except in top-level exception handlers.

ApplicationExceptionApplicationException

X DO NOT スロー サービスまたはそれから派生ApplicationExceptionです。X DO NOT throw or derive from ApplicationException.

InvalidOperationExceptionInvalidOperationException

✓ DO スロー、InvalidOperationExceptionオブジェクトが不適切な状態である場合。✓ DO throw an InvalidOperationException if the object is in an inappropriate state.

ArgumentException、ArgumentNullException、および argumentoutofrangeexception が発生しましたArgumentException, ArgumentNullException, and ArgumentOutOfRangeException

✓ DO スローArgumentExceptionまたはメンバーに無効な引数が渡された場合は、そのサブタイプのいずれか。✓ DO throw ArgumentException or one of its subtypes if bad arguments are passed to a member. 該当する場合は、大多数の派生の例外型を好みます。Prefer the most derived exception type, if applicable.

✓ DO 設定、ParamNameプロパティのサブクラスのいずれかをスローするときにArgumentExceptionです。✓ DO set the ParamName property when throwing one of the subclasses of ArgumentException.

このプロパティは、例外がスローされる原因となったパラメーターの名前を表します。This property represents the name of the parameter that caused the exception to be thrown. コンス トラクター オーバー ロードのいずれかを使用して、プロパティを設定できることに注意してください。Note that the property can be set using one of the constructor overloads.

✓ DO 使用valueプロパティ set アクセス操作子の暗黙的な値パラメーターの名前。✓ DO use value for the name of the implicit value parameter of property setters.

NullReferenceException、IndexOutOfRangeException、および AccessViolationExceptionNullReferenceException, IndexOutOfRangeException, and AccessViolationException

X DO NOT 明示的または暗黙的にスローする、api で公開されている呼び出し可能NullReferenceExceptionAccessViolationException、またはIndexOutOfRangeExceptionです。X DO NOT allow publicly callable APIs to explicitly or implicitly throw NullReferenceException, AccessViolationException, or IndexOutOfRangeException. これらの例外に予約されていますとでほとんどの場合は、バグを示す場合、実行エンジンによってスローされます。These exceptions are reserved and thrown by the execution engine and in most cases indicate a bug.

引数をこれらの例外をスローすることを避けるためにチェックを実行します。Do argument checking to avoid throwing these exceptions. これらの例外をスローすることは、時間の経過と共に変わる可能性があるメソッドの実装の詳細を公開します。Throwing these exceptions exposes implementation details of your method that might change over time.

StackOverflowExceptionStackOverflowException

X DO NOT を明示的にスローStackOverflowExceptionです。X DO NOT explicitly throw StackOverflowException. CLR によってのみ、例外を明示的にスローされる必要があります。The exception should be explicitly thrown only by the CLR.

X DO NOT キャッチStackOverflowExceptionです。X DO NOT catch StackOverflowException.

ほとんどでは、一貫性のある任意のスタック オーバーフローが存在する場合に残っているマネージ コードを記述することはできません。It is almost impossible to write managed code that remains consistent in the presence of arbitrary stack overflows. 任意のスタック オーバーフローからバックアップではなく、スタックがオーバーフローして明確に定義された場所に移動するプローブを使用して、整合性、CLR のアンマネージ部分を維持します。The unmanaged parts of the CLR remain consistent by using probes to move stack overflows to well-defined places rather than by backing out from arbitrary stack overflows.

OutOfMemoryExceptionOutOfMemoryException

X DO NOT を明示的にスローOutOfMemoryExceptionです。X DO NOT explicitly throw OutOfMemoryException. この例外では、CLR のインフラストラクチャによってのみスローされます。This exception is to be thrown only by the CLR infrastructure.

ComException、SEHException、および ExecutionEngineExceptionComException, SEHException, and ExecutionEngineException

X DO NOT を明示的にスロー COMExceptionExecutionEngineException、およびSEHExceptionです。X DO NOT explicitly throw COMException, ExecutionEngineException, and SEHException. これらの例外では、CLR のインフラストラクチャによってのみスローされます。These exceptions are to be thrown only by the CLR infrastructure.

Portions © 2005, 2009 Microsoft Corporation.All rights reserved.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

2008 年 10 月 22 日に Microsoft Windows Development シリーズの一部として、Addison-Wesley Professional によって発行された、Krzysztof Cwalina および Brad Abrams による「Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition」 (フレームワーク デザイン ガイドライン: 再利用可能な .NET ライブラリの規則、用法、パターン、第 2 版) から Pearson Education, Inc. の許可を得て再印刷されています。Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

関連項目See also