System.ExceptObject

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

Delphi

function ExceptObject: TObject;

C++

extern DELPHI_PACKAGE TObject* __fastcall ExceptObject(void);

プロパティ

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


説明

現在の例外オブジェクトを返します。

ExceptObject は、現在の例外オブジェクトを返します。 これは Exception オブジェクトで、現在処理されている例外を表します。現在処理されている例外がない場合には、ExceptObject は nil(Delphi の場合)または NULL(C++ の場合)を返します。

ExceptObject は、例外変数(Delphi ではブロック内で、C++ では catch 文で宣言される)にアクセスできないときに便利です。これは、例外ハンドラがプロシージャを呼び出すときに、is 例外変数をスコープがはずした場合に起こります。また、Delphi の else 例外ハンドラにおいても、例外変数を宣言できないため、該当します。

メモ: ExceptObject によって返されるオブジェクトは、例外ハンドラの終了後にはない可能性があります。このため、ExceptObject を使用して、例外オブジェクトへの参照を保持すること、または、その例外を再度発生させることはできません。いずれかの処理を実行する必要がある場合は、AcquireExceptionObject を呼び出します。
メモ: ExceptObject は、発生した例外が Delphi スタイルの例外である場合にのみ、C++ で機能します。ExceptObject を C++ で正しく使用するには、Delphi スタイル例外に対して、次のようなコードを使用します:
#include <System.SysUtils.hpp>
#include <stdio.h>

int main()
{
try 
{
StrToInt("bad integer");
} 
catch(...) 
{
TObject* Obj = ExceptObject();
printf("ExceptObject=%s\n", Obj ? AnsiString(Obj->ClassName()).c_str() : "NULL");
}
}

関連項目

コード例