System.ExceptObject
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");
}
}