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
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:
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:
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: