Java остаточно заблокувати це блок, який використовується для виконання важливого коду, такого як закриття з’єднання тощо.
Блок Java finally завжди виконується незалежно від того, обробляється виняток чи ні. Таким чином, він містить усі необхідні оператори, які потрібно надрукувати незалежно від того, виникне виняток чи ні.
Блок finally слідує за блоком try-catch.
Блок-схема остаточного блоку
Примітка. Якщо ви не обробляєте виняток, перед завершенням програми JVM виконує остаточний блок (якщо такий є).
Навіщо використовувати Java finally block?
- блок finally в Java можна використовувати для розміщення ' прибирати ' код, наприклад закриття файлу, закриття з'єднання тощо.
- Важливі заяви, які потрібно надрукувати, можна розмістити в блоці finally.
Нарешті використання Java
Давайте розглянемо різні випадки, коли можна використовувати блок Java finally.
Випадок 1: коли виключення не відбувається
Давайте розглянемо наведений нижче приклад, де програма Java не створює жодних винятків, а блок finally виконується після блоку try.
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...'); } }
Вихід:
Випадок 2: коли виникає виняток, але блок catch не обробляє його
Давайте подивимося на наступний приклад. Тут код створює виняток, однак блок catch не може його обробити. Незважаючи на це, блок finally виконується після блоку try, а потім програма завершує роботу аномально.
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...'); } }
Вихід:
Випадок 3: коли виникає виняткова ситуація, яка обробляється блоком catch
приклад:
Давайте розглянемо наступний приклад, де код Java створює виняток, а блок catch обробляє виняток. Пізніше блок finally виконується після блоку try-catch. Крім того, решта коду також виконується нормально.
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...'); } }
Вихід: