Junior
K čemu slouží blok finally v jazyce Java?
sobes.tech AI
Odpověď od AI
Blok finally v Javě slouží k vykonání kódu, který je povinně proveden, bez ohledu na to, zda v bloku try nebo catch došlo k výjimce, nebo ne.
Hlavní účely finally:
- Uvolnění zdrojů: Zavření souborů, síťových spojení, databází a dalších zdrojů otevřených v bloku
try. Zajišťuje, že zdroje nezůstanou otevřené, i když dojde k chybám. - Úklid: Provádění závěrečných akcí, jako je zrušení transakcí nebo odemykání mutexů.
- Vykonání povinných akcí: Jakýkoli kód, který musí být proveden na konci operace, bez ohledu na její výsledek.
Příklad:
try {
// Kód, který může vyvolat výjimku
FileReader file = new FileReader("myfile.txt");
// ... práce se souborem
} catch (FileNotFoundException e) {
// Zpracování výjimky
System.err.println("Soubor nenalezen: " + e.getMessage());
} finally {
// Tento kód se vždy provede
System.out.println("Provádím blok finally.");
// Zde se obvykle zavírají zdroje
if (file != null) { // Předpokládáme, že `file` je deklarováno mimo try-catch
try {
file.close();
} catch (IOException e) {
System.err.println("Chyba při zavírání souboru: " + e.getMessage());
}
}
}
Důležité poznámky:
- Kód v
finallyse vykoná i když v blokutrynebocatchbyl použit příkazreturn. - Pokud v
finallydojde k vyvolání nové výjimky, přepíše jakoukoli výjimku, která byla vyvolána v blocíchtrynebocatch. - Blok
finallymůže být vynechán, aletrymusí být doprovázen buďcatch, nebofinally(nebo obojím).