Јава коначно блокира је блок који се користи за извршавање важног кода као што је затварање везе итд.
Јава финалли блок се увек извршава без обзира да ли се обрађује изузетак или не. Дакле, садржи све потребне изјаве које треба одштампати без обзира да ли се десио изузетак или не.
Блок финалли следи блок три-цатцх.
Дијаграм тока коначног блока
Напомена: Ако не обрадите изузетак, пре окончања програма, ЈВМ извршава коначно блок (ако постоји).
Зашто користити Јава коначно блокирати?
- коначно блок у Јави може се користити за постављање ' поспремити ' као што је затварање датотеке, затварање везе итд.
- Важне изјаве које се штампају могу се ставити у финалли блок.
Коначно коришћење Јаве
Хајде да видимо различите случајеве у којима се Јава коначно може користити.
Случај 1: Када се не догоди изузетак
Хајде да видимо доњи пример где Јава програм не ствара никакав изузетак, а финалли блок се извршава након блока три.
ТестФиналлиБлоцк.јава
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...'); } }
Излаз:
Случај 2: Када се догоди изузетак, али га блок цатцх не обрађује
Погледајмо следећи пример. Овде код избацује изузетак, али блок цатцх не може да се носи са тим. Упркос томе, финалли блок се извршава након блока три, а затим се програм ненормално завршава.
ТестФиналлиБлоцк1.јава
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...'); } }
Излаз:
Случај 3: Када се догоди изузетак и њиме управља цатцх блок
Пример:
Хајде да видимо следећи пример где Јава код избацује изузетак, а блок цатцх рукује изузетком. Касније се блок финалли извршава након блока три-цатцх. Даље, остатак кода се такође извршава нормално.
ТестФиналлиБлоцк2.јава
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...'); } }
Излаз: