logo

Java konačno blokirana

Java konačno blokirana je blok koji se koristi za izvršavanje važnog koda kao što je zatvaranje veze itd.

Java finally block uvijek se izvršava bez obzira na to je li iznimka obrađena ili ne. Dakle, sadrži sve potrebne izjave koje je potrebno ispisati bez obzira na to dogodi li se iznimka ili ne.

Blok finally slijedi blok try-catch.

Dijagram toka konačnog bloka

Java konačno blokirana

Napomena: Ako ne riješite iznimku, prije prekidanja programa, JVM izvršava konačni blok (ako postoji).

Zašto koristiti Java finally block?

  • konačno blok u Javi može se koristiti za stavljanje ' počistiti ' kod kao što je zatvaranje datoteke, zatvaranje veze itd.
  • Važne izjave koje treba ispisati mogu se smjestiti u finalni blok.

Konačno korištenje Jave

Pogledajmo različite slučajeve u kojima se Java finally block može koristiti.

Slučaj 1: Kada se iznimka ne dogodi

Pogledajmo donji primjer gdje Java program ne izbacuje nikakvu iznimku, a finally blok se izvršava nakon try bloka.

TestFinallyBlock.java

 class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } } 

Izlaz:

Java konačno blokirana

Slučaj 2: Kada se dogodi iznimka, ali je ne obrađuje catch blok

Pogledajmo sljedeći primjer. Ovdje kod izbacuje iznimku, ali catch blok to ne može obraditi. Unatoč tome, finally blok se izvršava nakon try bloka i tada se program nenormalno prekida.

TestFinallyBlock1.java

 public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Izlaz:

Java konačno blokirana

Slučaj 3: Kada se dogodi iznimka i kada je obrađuje catch blok

Primjer:

Pogledajmo sljedeći primjer gdje Java kod izbacuje iznimku, a blok catch obrađuje iznimku. Kasnije se finally blok izvršava nakon try-catch bloka. Nadalje, ostatak koda također se normalno izvršava.

TestFinallyBlock2.java

 public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Izlaz:

Java konačno blokirana

Pravilo: Za svaki blok try može postojati nula ili više blokova catch, ali samo jedan blok finally.

Napomena: Blok finally neće se izvršiti ako program izađe (bilo pozivanjem System.exit() ili izazivanjem fatalne pogreške koja uzrokuje prekid procesa).