Java най-накрая блокира е блок, използван за изпълнение на важен код, като например затваряне на връзката и т.н.
Java finally block винаги се изпълнява независимо дали е обработено изключение или не. Следователно, той съдържа всички необходими изрази, които трябва да бъдат отпечатани, независимо от възникването на изключението или не.
Блокът finally следва блока try-catch.
Блок-схема на окончателния блок
Забележка: Ако не обработите изключението, преди да прекратите програмата, JVM изпълнява finally block (ако има такъв).
Защо да използвате Java finally block?
- накрая блокът в Java може да се използва за поставяне на почисти ' код като затваряне на файл, затваряне на връзка и т.н.
- Важните твърдения, които трябва да бъдат отпечатани, могат да бъдат поставени в блока finally.
Използването на Java най-накрая
Нека да видим различните случаи, в които Java finally block може да се използва.
Случай 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...'); } }
Изход: