logo

Java blockerar äntligen

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

Java blockerar äntligen

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:

Java blockerar äntligen

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:

Java blockerar äntligen

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:

Java blockerar äntligen

Regel: För varje försöksblock kan det finnas noll eller fler fångstblock, men bara ett slutblock.

Obs: Finalblocket kommer inte att exekveras om programmet avslutas (antingen genom att anropa System.exit() eller genom att orsaka ett allvarligt fel som gör att processen avbryts).