例外の生成
Try ブロックの記述 への移動
破壊的なエラー状態を示すには、そのエラー状態を記述する例外オブジェクトのインスタンスを構築し、予約語 raise を呼び出すことによって、例外を発生させます。
例外を発生させるには、予約語 raise を呼び出し、それに続いて、例外オブジェクトのインスタンスを記述します。これにより、例外が特定のアドレスから来るように確立されます。例外ハンドラが実際に例外を処理した場合には、例外インスタンスを破壊することで終わりになるため、開発者がこれを行う必要はありません。
たとえば、次の宣言があるとします:
type EPasswordInvalid = class(Exception);
raise を EPasswordInvalid インスタンスを呼び出すことにより、いつでも「不正なパスワード」であることを示す例外を発生させることができます。次のようになります:
if Password <> CorrectPassword then raise EPasswordInvalid.Create('Incorrect password entered');
例外発生すると、System ユニット内の ErrorAddr 変数は、アプリケーションが例外を発生させたアドレスに設定されます。例外ハンドラ内で ErrorAddr を参照して、例えば、エラーが起きたユーザーに通知することができます。また、例外が発生した際、ErrorAddr に現れる値を raise 句で指定することもできます。
警告: 値を、ErrorAddr そのものに割り当ててはいけません。これは、読み取り専用を前提としています。
例外のエラー アドレスを指定するには、例外インスタンスの後に予約語 at を追加し、続いて識別子などアドレス式を続けます。