Sdílet prostřednictvím


Omezení obslužných rutin ukončení

Příkaz goto nelze použít pro přechod do bloku příkazu __try nebo bloku příkazu __finally.Místo toho je nutné vstoupit do tohoto bloku příkazu prostřednictvím normálního toku řízení. (Lze však vyskočit z bloku příkazu __try.) Do bloku příkazu __finally také nelze vnořovat obslužné rutiny výjimky nebo obslužné rutiny ukončení.

Kromě toho některé druhy kódu povolené v obslužné rutině ukončení vrací sporné výsledky, tak byste je měli používat s největší opatrností, pokud vůbec.Jeden je příkaz goto, který vyskočí z bloku příkazu __finally.Pokud se tento blok spouští jako součást normálního ukončení, nenastane nic neobvyklého.Ale pokud systém odvíjí zásobník, toto odvíjení se zastaví a aktuální funkce získá řízení, jako by neexistovalo žádné abnormální ukončení.

Příkaz return uvnitř bloku příkazu __finally představuje zhruba stejnou situaci.Řízení se vrátí bezprostřednímu volajícímu funkce obsahující obslužnou rutinu ukončení.Pokud systém prováděl odvíjení zásobníku, je tento proces zastaven a program pokračuje, jako by nebyla vyvolána žádná výjimka.

Viz také

Referenční dokumentace

Zápis obslužné rutiny ukončení

Strukturované zpracování výjimek (C/C++)