Exception クラス
Exception クラスは、例外の継承元である基本クラスです。ほとんどの例外オブジェクトは、Exception の派生クラスのインスタンスです。ただし、Object クラスから派生したオブジェクトも例外としてスローできます。一部の言語では、Exception の派生オブジェクト以外のオブジェクトのスロー操作とキャッチ操作がサポートされていません。ほとんどの場合には、Exception オブジェクトだけをスローおよびキャッチすることをお勧めします。
Exception クラスには、例外を理解するときに役立つプロパティがいくつかあります。このようなプロパティを次に示します。
StackTrace プロパティ
このプロパティにはスタック トレースが格納されています。エラーが発生した位置を判別するときに、このスタック トレースを使用できます。デバッグ情報が使用できる場合には、スタック トレースにソース ファイル名とプログラム行番号が記述されます。
InnerException プロパティ
このプロパティによって、例外処理中に一連の例外が作成および保持されます。また、既にキャッチされた例外を格納する新しい例外を作成するときにもこのプロパティを使用できます。最初に発生した例外を、InnerException プロパティで作成された 2 番目の例外によって捕捉できるため、2 番目の例外を処理するコードが追加情報をチェックできます。
たとえば、ファイルを読み込み、データの書式を設定するメソッドがあるとします。このメソッドのコードがファイルを読み込もうとしたときに、FileException がスローされたとします。メソッドは FileException をキャッチし、BadFormatException をスローします。この場合は、FileException を BadFormatException の InnerException プロパティに保存できます。
例外がスローされた原因を判別する呼び出し元の判別機能を向上させるには、ヘルパ ルーチンがスローした例外をキャッチしてから発生したエラーを詳しく示す例外をスローするメソッドを使用します。エラーを詳しく示す例外を新規に作成して、最初に発生した例外に対して内部例外参照を設定できます。次に、このエラーを詳しく示す例外を呼び出し元にスローできます。この機能により、最初にスローされた例外で終了する、一連のリンクされた例外を作成できます。
Message プロパティ
このプロパティは、例外の原因に関する詳細情報を提供します。Message の作成言語は、例外をスローしたスレッドの Thread.CurrentUICulture プロパティによって指定される言語です。
HelpLink プロパティ
このプロパティは、例外の原因に関する詳細情報が記述されたヘルプ ファイルの URL (または URN) を保持します。
Exception の継承クラスのほとんどは Exception を継承するだけであり、追加メンバを実装せず、追加機能も提供しません。したがって、例外に関する最も重要な情報は、例外の階層、例外名、および例外に格納されている情報から得られます。