表示: Delphi C++
表示設定

例外の生成

提供:RAD Studio XE2
移動: 案内, 検索

例外処理:インデックス への移動

破壊的エラーを通知するには,例外を生成します。例外を生成するには,エラー状況を説明する例外のインスタンスを構築し,raise 予約語を呼び出します。

例外を生成するには,予約語 raise に続けて例外オブジェクトのインスタンスを呼び出します。これにより,特定のアドレスから来る例外が作られます。例外ハンドラで例外を処理した場合は,処理が終了するときに例外インスタンスは破棄されます。したがって,手作業で例外インスタンスを破棄する必要はありません。

たとえば,次のように新しい例外クラスを宣言します。



 type
   EPasswordInvalid = class(Exception);



パスワード無効例外を生成したいときには,以下のように EPasswordInvalid のインスタンスを生成します。



 if Password <> CorrectPassword then
   raise EPasswordInvalid.Create('Incorrect password entered');



例外が発生した場合,SysUtils ユニットの ExceptAddr 関数で発生したアドレスを取得することができます。例外ハンドラで ExceptAddr を参照してエラーの発生場所をユーザーに知らせることもできます。例外が発生したときに ErrorAddr に示される値を raise 節に指定することもできます。

警告:  自分で ExceptAddr に値を代入してはなりません。ExceptAddr は読み出し専用として用意されています。

例外の生成アドレスを指定するには,予約語 at を例外インスタンスの後に追加し,さらにポインタまたはポインタを返す関数を続けます。たとえば,パスワードを返す DLL が致命的なエラーを起こした場合に,nil ではない値を返してくると仮定し,その値を ErrorPointer という変数が保持しているとします。

関連項目

以前のバージョン
他言語版