Junior
Zašto se koristi blok finally u Java programskom jeziku?
sobes.tech АИ
Одговор од АИ
Blok finally u Javi se koristi za izvršavanje koda koji obavezno mora biti izvršen, bez obzira na to da li je u try ili catch bloku bačena izuzetka ili ne.
Glavne namene finally:
- Oslobađanje resursa: Zatvaranje fajlova, mrežnih konekcija, baza podataka i drugih resursa otvorenih u
trybloku. Osigurava da resursi ne ostanu otvoreni, čak ni ako dođe do grešaka. - Čišćenje: Izvršavanje završnih radnji, poput poništavanja transakcija ili otključavanja mutexa.
- Izvršavanje obaveznih radnji: Svaki kod koji mora biti izvršen na kraju operacije, bez obzira na njen rezultat.
Primer:
try {
// Kod koji može izazvati izuzetak
FileReader file = new FileReader("myfile.txt");
// ... rad sa fajlom
} catch (FileNotFoundException e) {
// Obrada izuzetka
System.err.println("Fajl nije pronađen: " + e.getMessage());
} finally {
// Ovaj kod će uvek biti izvršen
System.out.println("Izvršavanje finally bloka.");
// Ovde se obično zatvaraju resursi
if (file != null) { // Pretpostavljamo da je `file` deklarisan izvan try-catch
try {
file.close();
} catch (IOException e) {
System.err.println("Greška pri zatvaranju fajla: " + e.getMessage());
}
}
}
Važno je zapamtiti:
- Kod u
finallyse čak i izvršava ako je utryilicatchbloku korišena naredbareturn. - Ako u
finallydođe do bacanja nove izuzetke, ona prekriva svaku izuzetku koja je bačena utryilicatchblokovima. - Blok
finallymože biti izostavljen, alitrymora biti praćen ilicatch, ilifinally(ili oboje).