System.Rtti.TInterceptExceptionNotify
Delphi
TInterceptExceptionNotify = reference to procedure(Instance: TObject;
Method: TRttiMethod; const Args: TArray<TValue>; out RaiseException: Boolean;
TheException: Exception; out Result: TValue);
C++
__interface TInterceptExceptionNotify : public System::IInterface
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
anonMethod class |
public | System.Rtti.pas System.Rtti.hpp |
System.Rtti | System.Rtti |
説明
System.Rtti.TVirtualMethodInterceptor.OnException イベント ハンドラ手続きの型です。
TInterceptExceptionNotify を使用すると、例外の巻き戻しを行わないよう OnException イベント ハンドラを実装し、メソッドが正常に終了したように見せかけることができます。
RaiseException
を False に設定すると、巻き戻しが行われず、発生した例外がさらに伝播することはありません。 デフォルト値は True で、その場合には例外が再発生し、呼び出し側に伝播します。
Args
は、仮想メソッドに渡された引数のリストで、TValue の値としてラップされています。 var
または out
のパラメータの場合には、これらの値をさらに変更して呼び出し側に影響を及ぼすことができます。パラメータに対応する値が値渡しされている場合、その値はこのイベントが呼び出された後で破棄されます。 var
または out
のパラメータに対する変更は、例外が発生した場合でも、観察可能な影響を持つことに注意してください。
TheException
は、継承したメソッド実装で発生した例外オブジェクトです。
Instance
は、仮想メソッドが呼び出された先のインスタンスです。
Method
は、インスタンスに対して呼び出された仮想メソッドに対応する RTTI オブジェクトです。
RaiseException を False に設定した場合(例外の伝播が行われない)、Result
にはメソッドに要求される戻り値を設定しなければなりません。 そのデフォルト値は TValue.Empty であり、これは 0、nil、''、または戻り値型に対応する空の値に変換されます。