現在のスタック フレームで現在の例外をインターセプトするときに、デバッガーによって呼び出されます。
構文
パラメーター
dwFlags
[入力] さまざまなアクションを指定します。 現時点では、INTERCEPT_EXCEPTION_ACTION の値 IEA_INTERCEPT
のみがサポートされているため、これを指定する必要があります。
pqwCookie
[出力] 特定の例外を識別する一意の値。
戻り値
成功した場合は、S_OK を返します。それ以外の場合はエラー コードを返します。
最も一般的なエラー通知は次のとおりです。
エラー | 説明 |
---|---|
E_EXCEPTION_CANNOT_BE_INTERCEPTED |
現在の例外をインターセプトできません。 |
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK |
現在の実行フレームでハンドラーがまだ検索されていません。 |
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED |
このフレームでは、このメソッドはサポートされていません。 |
解説
デバッガーでは、例外がスローされると、例外処理プロセス中の主要なポイントでランタイムから制御を取得します。 デバッガーでは、これらの主要な瞬間に、現在のスタック フレームで例外をインターセプトする必要があるかどうかを確認できます。 このように、インターセプトされた例外は、スタック フレームに例外ハンドラー (プログラム コードの try/catch ブロックなど) がない場合でも、実質的にスタック フレームの実行時の例外ハンドラーになります。
デバッガーでは、例外をインターセプトする必要があるかどうかを確認したい場合に、現在のスタック フレーム オブジェクトでこのメソッドを呼び出します。 このメソッドでは、例外のすべての詳細を処理します。 IDebugStackFrame3 インターフェイスが実装されていない場合、または InterceptStackException
メソッドによってエラーが返された場合、デバッガーでは通常どおりに例外の処理を続行します。
Note
例外は、マネージド コード内で (つまり、デバッグ中のプログラムが .NET ランタイムで実行されている場合に) のみインターセプトできます。 もちろん、サードパーティ言語の実装者は独自のデバッグ エンジンに InterceptStackException
を実装できます (そのような選択をした場合)。
インターセプトが完了すると、IDebugInterceptExceptionCompleteEvent2 が通知されます。