Junior
Na čo slúži blok finally v jazyku Java?
sobes.tech AI
Odpoveď od AI
Blok finally v Jave se uporablja za izvajanje kode, ki je obvezno treba biti izvedena, ne glede na to, ali je v try ali catch bloku vržena izjema ali ne.
Glavni nameni finally:
- Osloboditev virov: Zapiranje datotek, omrežnih povezav, baz podatkov in drugih virov, ki so bili odprti v
trybloku. Zagotavlja, da viri ne ostanejo odprti, tudi če pride do napak. - Čiščenje: Izvajanje zaključnih dejanj, kot je preklic transakcij ali odklepanje mutexov.
- Izvajanje obveznih dejanj: Vsaka koda, ki mora biti izvedena na koncu operacije, ne glede na njen rezultat.
Primer:
try {
// Koda, ki lahko vrže izjemo
FileReader file = new FileReader("myfile.txt");
// ... delo z datoteko
} catch (FileNotFoundException e) {
// Obdelava izjeme
System.err.println("Datoteka ni najdena: " + e.getMessage());
} finally {
// Ta koda se bo vedno izvedla
System.out.println("Izvajanje bloka finally.");
// Tukaj običajno zapirajo vire
if (file != null) { // Predpostavljamo, da je `file` deklariran zunaj try-catch
try {
file.close();
} catch (IOException e) {
System.err.println("Napaka pri zapiranju datoteke: " + e.getMessage());
}
}
}
Pomembno je zapomniti:
- Koda v
finallyse tudi izvrši, če je vtryalicatchbloku uporabljena ukazreturn. - Če v
finallyvržete novo izjemo, ta prepiše katerokoli izjemo, vrženo vtryalicatchblokih. - Blok
finallyje lahko izpuščen, vendar moratrybiti spremljan bodisi zcatch, bodisi zfinally(ali oboje).