Freigeben über


IDebugStackFrame3::InterceptCurrentException

Wird vom Debugger im aktuellen Stapelframe aufgerufen, wenn er die aktuelle Ausnahme abfangen möchte.

Syntax

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

Parameter

dwFlags
[in] Gibt verschiedene Aktionen an. Derzeit wird nur der INTERCEPT_EXCEPTION_ACTION Wert IEA_INTERCEPT unterstützt und muss angegeben werden.

pqwCookie
[out] Eindeutiger Wert, der eine bestimmte Ausnahme identifiziert.

Rückgabewert

Wenn dies erfolgreich ist, wird S_OK zurückgegeben; andernfalls wird ein Fehlercode zurückgegeben.

Im Folgenden finden Sie die häufigsten Fehlerrückmeldungen.

Error Beschreibung
E_EXCEPTION_CANNOT_BE_INTERCEPTED Die aktuelle Ausnahme kann nicht abgefangen werden.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK Der aktuelle Ausführungsrahmen wurde noch nicht nach einem Handler gesucht.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED Diese Methode wird für diesen Frame nicht unterstützt.

Hinweise

Wenn eine Ausnahme ausgelöst wird, erhält der Debugger während des Ausnahmebehandlungsprozesses die Kontrolle über die Laufzeit. Während dieser wichtigen Momente kann der Debugger den aktuellen Stapelframe fragen, ob der Frame die Ausnahme abfangen möchte. Auf diese Weise ist eine abgefangene Ausnahme im Wesentlichen ein On-the-Fly-Ausnahmehandler für einen Stapelframe, auch wenn dieser Stapelframe keinen Ausnahmehandler hat (z. B. einen Try/Catch-Block im Programmcode).

Wenn der Debugger wissen möchte, ob die Ausnahme abgefangen werden soll, wird diese Methode für das aktuelle Stapelframeobjekt aufgerufen. Diese Methode ist für die Behandlung aller Details der Ausnahme verantwortlich. Wenn die IDebugStackFrame3-Schnittstelle nicht implementiert ist oder die InterceptStackException Methode einen Fehler zurückgibt, wird die Ausnahme vom Debugger weiterhin normal verarbeitet.

Hinweis

Ausnahmen können nur in verwaltetem Code abgefangen werden, d. h., wenn das zu debuggende Programm unter der .NET-Laufzeit ausgeführt wird. Selbstverständlich können Sprachimplementierer von Drittanbietern in ihren eigenen Debugmodulen implementieren InterceptStackException , wenn sie dies auswählen.

Nach Abschluss der Abfangen wird ein IDebugInterceptExceptionCompleteEvent2 signalisiert.

Siehe auch