8. Blok finally

Při použití příkazů try a catch se mění průběh provádění programu a nemusí být zaručeno spuštění příkazů, které jsou v programu důležité. Uveďme příklad čtení ze souboru. Pokud by nastala chyba při čtení, aplikace by spadla a nebylo by provedeno zavření souboru (soubor by byl stále otevřen). Abychom zamezili přeskočení důležitého kódu, lze využít příkazy finally. Obecná syntaxe příkazu finally:

finally
{
	//Kód, který musí být vždy proveden
}

Tento příkaz zajistí, aby příkazy uzavřené v bloku příkazu finally byly vykonány bez rozdílu, zda byla vyvolána výjimka či nikoliv. Tento blok se umísťuje bezprostředně za blok try, nebo za poslední blok catch. Pokud program začne provádět blok try s přidruženým blokem finally, bude obsah bloku finally proveden vždy, i když dojde k výjimce. Jestliže je výjimka zachycena a zpracována lokálně (uvnitř aktuální metody), je nejprve provedena obsluha výjimky catch a poté blok finally. Jestliže je výjimka zpracována mimo aktuální metodu (je nutné prohledat seznam volajících metod), je nejdříve spuštěn blok finally. Blok finally bude proveden vždy. [9]