Sdílet prostřednictvím


Zpracování ukončení

Obslužná rutina ukončení zajišťuje, že se provede konkrétní blok kódu, kdykoli tok řízení opustí určitý chráněný blok kódu. Obslužná rutina ukončení se skládá z následujících prvků.

  • Chráněný blok kódu
  • Blok ukončovacího kódu, který se spustí, když řídicí tok opustí strážené tělo

Obslužné rutiny ukončení jsou deklarovány v syntaxi specifické pro jazyk. Pomocí optimalizujícího kompilátoru Microsoft C/C++ jsou implementovány pomocí __try a __finally. Další informace naleznete v tématu syntaxe obslužné rutiny.

Strážené tělo kódu může být blok kódu, sada vnořených bloků nebo celá procedura nebo funkce. Při každém spuštění stráženého těla se spustí ukončovací blok kódu. Jedinou výjimkou je, když se vlákno ukončí během provádění stráženého těla (například pokud je funkce ExitThread nebo ExitProcess volána ze stráženého těla).

Blok ukončení se spustí, když tok řízení opustí strážené tělo bez ohledu na to, jestli se strážené tělo normálně nebo neobvykle ukončilo. Strážené tělo je považováno za ukončené normálně, když se provede poslední příkaz v bloku a řízení pokračuje postupně do bloku ukončení. K neobvyklému ukončení dochází, když tok řízení opustí blok řízení kvůli výjimce nebo kvůli kontrolnímu příkazu, jako je return, goto, breaknebo continue. Funkce AbnormalTermination může být volána z bloku ukončení, aby zjistila, zda kontrolovaná část skutečně skončila normálně.