logo

Java най-накрая блокира

Java най-накрая блокира е блок, използван за изпълнение на важен код, като например затваряне на връзката и т.н.

Java finally block винаги се изпълнява независимо дали е обработено изключение или не. Следователно, той съдържа всички необходими изрази, които трябва да бъдат отпечатани, независимо от възникването на изключението или не.

Блокът finally следва блока try-catch.

Блок-схема на окончателния блок

Java най-накрая блокира

Забележка: Ако не обработите изключението, преди да прекратите програмата, 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...'); } } 

Изход:

Java най-накрая блокира

Случай 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...'); } } 

Изход:

Java най-накрая блокира

Случай 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...'); } } 

Изход:

Java най-накрая блокира

Правило: За всеки блок try може да има нула или повече catch блокове, но само един finally блок.

Забележка: Блокът finally няма да бъде изпълнен, ако програмата излезе (или чрез извикване на System.exit() или чрез причиняване на фатална грешка, която причинява прекъсване на процеса).