System.ExceptProc

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

Delphi

ExceptProc: Pointer;    { Unhandled exception handler }

C++

extern DELPHI_PACKAGE void *ExceptProc;

プロパティ

種類 可視性 ソース ユニット
variable public
System.pas
System.hpp
System System


説明

最下位レベルの例外ハンドラを指します。

Delphi コードでは、ExceptProc は未処理の例外を処理します(未処理の例外とは try..except 文の except 部分で捕捉されていない例外のことです)。 アプリケーションに TApplication オブジェクトがある場合は、それが自動的に例外を捕捉し OnException イベントを発生させます(このイベントには、アプリケーションまたは TApplicationEvents オブジェクトの OnException イベント ハンドラを使って応答できます)。 したがって、TApplication オブジェクトが例外を捕捉するので、例外が ExceptProc ハンドラまで到達することはありません。 ただし、たとえ TApplication オブジェクトがあっても、初期化や終了処理の間に発生した例外はそれには捕捉されません。 これらの例外は ExceptProc によって処理されます。

ExceptProc をフックして、未処理の例外の通知方法を変更できます。 それには、ExceptProc のコンテキストを保存してから独自の例外ハンドラのアドレスに変更します。 そのうえで、新しい例外ハンドラの最初のステートメントでは、保存されている ExceptProc の値を再インストールする必要があります。 このようにして、ExceptProc 手続きは例外手続きチェーンの一部になります。それぞれの例外手続きは、インストールとは逆の順序で実行されます。

ExceptProc に割り当てられる手続きには、次のようなシグニチャが必要です。

 procedure ExceptHandler(ExceptObject: TObject; ExceptAddr: Pointer);


関連項目