例外クラスとプロパティ

Exception クラスは、例外が継承される基底クラスです。 たとえば、 InvalidCastException クラス階層は次のようになります。

Object
  Exception
    SystemException
      InvalidCastException

Exception クラスには、例外の理解を容易にするために役立つ次のプロパティがあります。

プロパティ名 説明
Data キーと値のペアで任意のデータを保持する IDictionary
HelpLink 例外の原因に関する広範な情報を提供するヘルプ ファイルへの URL (または URN) を保持できます。
InnerException このプロパティは、例外処理中に一連の例外を作成して保持するために使用できます。 これを使用して、以前にキャッチされた例外を含む新しい例外を作成できます。 元の例外は、 InnerException プロパティの 2 番目の例外によってキャプチャでき、2 番目の例外を処理するコードが追加情報を調べることができます。 たとえば、不適切な形式の引数を受け取るメソッドがあるとします。 コードは、引数の読み取りを試みますが、例外がスローされます。 このメソッドは例外をキャッチし、FormatExceptionを送出します。 例外がスローされる理由を特定する呼び出し元の機能を向上させるために、メソッドがヘルパー ルーチンによってスローされた例外をキャッチし、発生したエラーをより示す例外をスローすることが望ましい場合があります。 内部例外参照を元の例外に設定できる、より意味のある新しい例外を作成できます。 この意味のある例外は、呼び出し元にスローすることができます。 この機能を使用すると、最初にスローされた例外で終わる一連のリンクされた例外を作成できます。
Message 例外の原因に関する詳細を提供します。
Source エラーの原因となるアプリケーションまたはオブジェクトの名前を取得または設定します。
StackTrace エラーが発生した場所を特定するために使用できるスタック トレースが含まれています。 デバッグ情報が使用可能な場合、スタック トレースにはソース ファイル名とプログラム行番号が含まれます。

Exceptionから継承するクラスのほとんどは、追加のメンバーを実装したり、追加の機能を提供したりしません。これらは単にExceptionから継承します。 したがって、例外の最も重要な情報は、例外クラス、例外名、および例外に含まれる情報の階層にあります。

Exceptionから派生したオブジェクトのみをスローしてキャッチすることをお勧めしますが、Object クラスから派生したオブジェクトは例外としてスローできます。 すべての言語が、 Exceptionから派生しないオブジェクトのスローとキャッチをサポートしているわけではないことに注意してください。

こちらも参照ください