Sdílet prostřednictvím


IDebugStackFrame3::InterceptCurrentException

Volá se ladicí program na aktuálním snímku zásobníku, když chce zachytit aktuální výjimku.

Syntaxe

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

Parametry

dwFlags
[v] Určuje různé akce. V současné době je podporována pouze hodnota IEA_INTERCEPT INTERCEPT_EXCEPTION_ACTION a musí být zadána.

pqwCookie
[ven] Jedinečná hodnota identifikující konkrétní výjimku

Vrácená hodnota

V případě úspěchu vrátí S_OK; v opačném případě vrátí kód chyby.

Následují nejběžnější chyby, které se vrátí.

Chyba Popis
E_EXCEPTION_CANNOT_BE_INTERCEPTED Aktuální výjimku nelze zachytit.
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK Aktuální rámec spuštění ještě nebyl prohledán obslužnou rutinou.
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED Tato metoda není pro tento rámec podporována.

Poznámky

Když dojde k vyvolání výjimky, ladicí program získá řízení z doby běhu v klíčových bodech během procesu zpracování výjimek. Během těchto klíčových okamžiků může ladicí program požádat aktuální rámec zásobníku, pokud chce snímek zachytit výjimku. Tímto způsobem je zachycená výjimka v podstatě obslužnou rutinou zachytávání výjimek pro rámec zásobníku, i když tento rámec zásobníku nemá obslužnou rutinu výjimky (například blok try/catch v kódu programu).

Když ladicí program chce vědět, jestli má být výjimka zachycena, volá tuto metodu na aktuální objekt zásobníku rámce. Tato metoda zodpovídá za zpracování všech podrobností o výjimce. Pokud IDebugStackFrame3 rozhraní není implementováno nebo InterceptStackException metoda vrátí chybu, ladicí program pokračuje ve zpracování výjimky normálně.

Poznámka:

Výjimky lze zachytit pouze ve spravovaném kódu, tj. při spuštění programu, který je laděný program spuštěn v době běhu .NET. Implementátoři jazyka třetích stran samozřejmě můžou implementovat InterceptStackException ve svých vlastních ladicích modulech, pokud tak zvolí.

Po dokončení zachycení se signalizují IDebugInterceptionCompleteEvent2 .

Viz také