IDebugStackFrame3::InterceptCurrentException
Wywoływana przez debuger w bieżącej ramce stosu, gdy chce przechwycić bieżący wyjątek.
Składnia
Parametry
dwFlags
[in] Określa różne akcje. Obecnie obsługiwana jest tylko wartość IEA_INTERCEPT
INTERCEPT_EXCEPTION_ACTION i musi być określona.
pqwCookie
[out] Unikatowa wartość identyfikującą określony wyjątek.
Wartość zwracana
Jeśli operacja powiedzie się, zwraca S_OK; w przeciwnym razie zwraca kod błędu.
Poniżej przedstawiono najbardziej typowe zwracane błędy.
Błąd | opis |
---|---|
E_EXCEPTION_CANNOT_BE_INTERCEPTED |
Nie można przechwycić bieżącego wyjątku. |
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK |
Bieżąca ramka wykonywania nie została jeszcze przeszukana dla procedury obsługi. |
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED |
Ta metoda nie jest obsługiwana dla tej ramki. |
Uwagi
Gdy zgłaszany jest wyjątek, debuger uzyskuje kontrolę nad czasem wykonywania w kluczowych punktach podczas procesu obsługi wyjątków. W tych kluczowych momentach debuger może zapytać bieżącą ramkę stosu, jeśli ramka chce przechwycić wyjątek. W ten sposób przechwycony wyjątek jest zasadniczo procedurą obsługi wyjątków na bieżąco dla ramki stosu, nawet jeśli ta ramka stosu nie ma procedury obsługi wyjątków (na przykład bloku try/catch w kodzie programu).
Gdy debuger chce wiedzieć, czy wyjątek powinien zostać przechwycony, wywołuje tę metodę w bieżącym obiekcie ramki stosu. Ta metoda jest odpowiedzialna za obsługę wszystkich szczegółów wyjątku. Jeśli interfejs IDebugStackFrame3 nie jest zaimplementowany lub InterceptStackException
metoda zwraca błąd, debuger kontynuuje przetwarzanie wyjątku normalnie.
Uwaga
Wyjątki mogą być przechwytywane tylko w kodzie zarządzanym, czyli wtedy, gdy debugowany program jest uruchamiany w czasie wykonywania platformy .NET. Oczywiście implementacje języka innych firm mogą implementować InterceptStackException
we własnych aparatach debugowania, jeśli tak wybierzą.
Po zakończeniu przechwytywania sygnał IDebugInterceptExceptionCompleteEvent2 .