Java blockerar äntligen är ett block som används för att exekvera viktig kod som att stänga anslutningen etc.
Java finally block exekveras alltid oavsett om ett undantag hanteras eller inte. Därför innehåller den alla nödvändiga uttalanden som behöver skrivas ut oavsett om undantaget inträffar eller inte.
Slutligen blocket följer försök-fångst blocket.
Flödesschema för äntligen block
Obs: Om du inte hanterar undantaget, innan du avslutar programmet, exekverar JVM slutligen block (om något).
Varför använda Java äntligen blockera?
- äntligen block i Java kan användas för att sätta ' städa ' kod som att stänga en fil, stänga anslutningen, etc.
- De viktiga uttalanden som ska skrivas ut kan placeras i finalblocket.
Användning av Java äntligen
Låt oss se de olika fallen där Java äntligen blockerar kan användas.
Fall 1: När ett undantag inte inträffar
Låt oss se exemplet nedan där Java-programmet inte ger något undantag, och finalblocket exekveras efter försöksblocket.
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...'); } }
Produktion:
Fall 2: När ett undantag inträffar men inte hanteras av fångstblocket
Låt oss se det fyllande exemplet. Här ger koden ett undantag men catch-blocket kan inte hantera det. Trots detta exekveras finalblocket efter försöksblocket och sedan avslutas programmet onormalt.
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...'); } }
Produktion:
Fall 3: När ett undantag inträffar och hanteras av fångstblocket
Exempel:
Låt oss se följande exempel där Java-koden kastar ett undantag och catch-blocket hanterar undantaget. Senare exekveras finally-blocket efter try-catch-blocket. Vidare exekveras även resten av koden normalt.
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...'); } }
Produktion: