IDebugStackFrame3::InterceptCurrentException
Wird vom Debugger im aktuellen Stapelframe aufgerufen, wenn er die aktuelle Ausnahme abfangen möchte.
Syntax
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.