Sobes.tech
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 try bloku. 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 finally se tudi izvrši, če je v try ali catch bloku uporabljena ukaz return.
  • Če v finally vržete novo izjemo, ta prepiše katerokoli izjemo, vrženo v try ali catch blokih.
  • Blok finally je lahko izpuščen, vendar mora try biti spremljan bodisi z catch, bodisi z finally (ali oboje).