例外のクラスの処理

提供: RAD Studio
移動先: 案内検索

例外ハンドラの記述 への移動


例外は、常にクラスとして表現されます。このため、開発者は常に例外クラスの階層を操作することとなります。たとえば、VCL は、ERangeError 例外を、EIntError の下位クラスとして定義しています。

基底例外クラスに対して例外ハンドラを提供する場合、そのクラスの直接のインスタンスだけでなく、その下位クラスのインスタンスも同様に捕捉しなければなります。たとえば、次の例外ハンドラは、整数の数学例外すべてを処理しており、その例外には、ERangeErrorEDivByZeroEIntOverflow があります:

 try
 { statements that perform integer math operations }
 except
   on EIntError do { special handling for integer math errors };
 end;

この基底クラスに対するエラー ハンドラを、より限定した(派生した)例外のための特殊ハンドラと組み合わせることも可能です。これを行うには、catch 文を、例外が発生した際に検索したい順に、配置していきます。たとえばこのブロックでは、範囲エラーに対する特定の処理、そして、その他すべての整数数学エラーに対する処理を提供しています。

 try
 { statements performing integer math }
 except
   on ERangeError do { out-of-range handling };
   on EIntError do { handling for other integer math errors };
 end;

EIntError のハンドラが、ERangeError のハンドラの前に来た場合、ERangeError の特殊ハンドラまで、実行は決して到達しない点に注目してください。

関連項目