IDebugStackFrame3::InterceptCurrentException
Wird vom Debugger im aktuellen Stapelrahmen, wenn sie die aktuelle Ausnahme abfangen sollen.
HRESULT InterceptCurrentException(
INTERCEPT_EXCEPTION_ACTION dwFlags,
UINT64* pqwCookie
);
int InterceptCurrentException(
uint dwFlags,
out ulong pqwCookie
);
Parameter
dwFlags
[in] Gibt verschiedene Aktionen an. Derzeit wird nur der Wert INTERCEPT_EXCEPTION_ACTION unterstützt wird IEA_INTERCEPT und muss angegeben werden.pqwCookie
[out] Eindeutiger Wert, der einer bestimmten Ausnahme angibt.
Rückgabewert
Bei Erfolg gibt S_OK zurück. andernfalls gibt einen Fehlercode zurück.
Nachfolgend sind der häufigste Fehlers beendet wird.
Fehler |
Beschreibung |
---|---|
E_EXCEPTION_CANNOT_BE_INTERCEPTED |
Die aktuelle Ausnahme nicht abgefangen werden. |
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK |
Die aktuellen Skinframes Ausführung noch einen Handler für nicht gefunden wurde. |
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED |
Diese Methode wird nicht für die dieser Frame unterstützt. |
Hinweise
Wenn eine Ausnahme ausgelöst wird, der Debugger gewinn die Steuerung von der Laufzeit Punkt während des Ausnahmebehandlungsprozesses. Während dieser Schlüssel momente kann der Debugger den aktuellen Stapelrahmen anfordern, wenn der Frame die Ausnahme abfangen möchten. Auf diese Weise ist eine abgefangene Ausnahme im Grunde ein direkter Ausnahmehandler für einen Stapelrahmen, auch wenn dieser Stapelrahmen keinen Ausnahmehandler hat (z. B. einen try/catch-Block im Programmcode).
Wenn der Debugger wissen möchte, wenn die Ausnahme abgefangen wird, ruft diese Methode für den aktuellen Stapelrahmen Objekt an. Diese Methode dient zum Behandeln aller Details der Ausnahme. Wenn die IDebugStackFrame3-Schnittstelle nicht implementiert wird oder die InterceptStackException-Methode jeden Fehler zurückgibt, führt der Debugger die Ausnahme verarbeitet gewöhnlich auf Weiter.
Hinweis
Ausnahmen können nur in verwaltetem Code abgefangen werden, d. h. wenn das Programm, das gedebuggt wird, unter der .NET-Laufzeit ausgeführt wird.Natürlich können von Drittanbietern Sprachen in ihren eigenen Implementierungen InterceptStackException Debuggen die Option Module implementieren, wenn sie so auswählen.
Nachdem das Abfangen abgeschlossen ist, wird IDebugInterceptExceptionCompleteEvent2 signalisiert.