Časování zpracování výjimek: shrnutí
Ukončení rutiny spuštěn bez ohledu na to jak na __try bloku je ukončeno.Přechod z příčiny __try blok, longjmp prohlášení, které předává řízení bloku a příkazem zásobníku kvůli zpracování výjimek.
[!POZNÁMKA]
Visual C++ podporuje dvě formy setjmp a longjmp příkazy.Rychlé verze obchází ukončení zpracování, ale je efektivnější.Chcete-li používat tuto verzi zahrňte soubor SETJMP.H.Ostatní verze podporuje ukončení zpracování, jak je popsáno v předchozím odstavci.Chcete-li používat tuto verzi zahrňte soubor SETJMPEX.H.Zvýšení výkonu rychlé verze závisí na konfiguraci hardwaru.
Operační systém provede všechny obslužné rutiny ukončení ve správném pořadí před jiným kódem mohou být provedeny, včetně těla popisovač výjimky.
Výjimku při způsobit přerušení systému třeba nejprve spustit filtr část jednoho nebo více popisovačích výjimek před rozhodnutí, co je ukončit.Pořadí událostí je:
Je vyvolána výjimka.
Systém vyhledá hierarchii popisovačích výjimek aktivní a provede filtr obslužné s nejvyšší prioritou; Toto je popisovač výjimky naposledy nainstalovanou a většina hluboko vnořené v blocích a volání funkce.
Pokud tento filtr předává řízení (vrátí 0), proces pokračuje, dokud filtr zjištěn nepředá řízení.
Tento filtr vrátí hodnotu –1, pokračuje zpracování, kde k výjimce a žádné zániku.
Filtr vrátí hodnotu 1, dojde k následujícím událostem:
Systém unwinds zásobníku, zrušením všech rámců zásobníku mezi aktuálně spuštěný kód (kde výjimka byla aktivována) a zásobníku rámeček obsahující popisovač výjimky, převezme řízení.
Zásobník je unwound, je provedena každý ukončení rutiny v zásobníku.
Popisovač výjimky, sama je provést.
Ovládací prvek předá řádek kódu po skončení tohoto zpracování výjimek.