logo

Java try-catch block

Java test block

Java Prova block används för att omsluta koden som kan orsaka ett undantag. Det måste användas inom metoden.

Om ett undantag inträffar vid den specifika satsen i try-blocket, kommer resten av blockkoden inte att köras. Så det rekommenderas att inte behålla koden i försöksblocket som inte ger ett undantag.

Java try block måste följas av antingen catch eller finally block.

Syntax för Java try-catch

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

Syntax för försök-slutligen block

 try{ //code that may throw an exception }finally{} 

Java-fångstblock

Java catch block används för att hantera undantaget genom att deklarera typen av undantag inom parametern. Det deklarerade undantaget måste vara det överordnade klassenundantaget (d.v.s. Undantag) eller den genererade undantagstypen. Det goda tillvägagångssättet är dock att deklarera den genererade typen av undantag.

terminal kali linux

Fångstblocket måste endast användas efter försöksblocket. Du kan använda flera fångstblock med ett enda försöksblock.

Internt arbete av Java try-catch block

Java try-catch block

JVM kontrollerar först om undantaget hanteras eller inte. Om undantaget inte hanteras tillhandahåller JVM en standardundantagshanterare som utför följande uppgifter:

  • Skriver ut undantagsbeskrivning.
  • Skriver ut stackspåret (hierarki av metoder där undantaget inträffade).
  • Gör att programmet avslutas.

Men om applikationsprogrammeraren hanterar undantaget bibehålls det normala flödet för applikationen, dvs resten av koden exekveras.

Problem utan undantagshantering

Låt oss försöka förstå problemet om vi inte använder ett try-catch-block.

Exempel 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Som visas i exemplet ovan är resten av koden inte utförs (i sådant fall resten av koden uttalandet skrivs inte ut).

Det kan finnas 100 rader kod efter undantaget. Om undantaget inte hanteras kommer inte all kod under undantaget att exekveras.

Lösning genom undantagshantering

Låt oss se lösningen på ovanstående problem genom ett java try-catch-block.

Exempel 2

TryCatchExample2.java

 public class TryCatchExample2 { public static void main(String[] args) { try { int data=50/0; //may throw exception } //handling the exception catch(ArithmeticException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 java.lang.ArithmeticException: / by zero rest of the code 

Som visas i exemplet ovan är resten av koden exekveras, dvs resten av koden uttalande skrivs ut.

Exempel 3

I det här exemplet höll vi också koden i ett försöksblock som inte ger ett undantag.

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
Testa det nu

Produktion:

 java.lang.ArithmeticException: / by zero 

Här kan vi se att om ett undantag inträffar i försöksblocket, kommer resten av blockkoden inte att köras.

Exempel 4

Här hanterar vi undantaget med hjälp av det överordnade klassenundantaget.

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 java.lang.ArithmeticException: / by zero rest of the code 

Exempel 5

Låt oss se ett exempel för att skriva ut ett anpassat meddelande vid undantag.

TryCatchExample5.java

ansluta databas java
 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
Testa det nu

Produktion:

 Can't divided by zero 

Exempel 6

Låt oss se ett exempel för att lösa undantaget i ett fångstblock.

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
Testa det nu

Produktion:

 25 

Exempel 7

I det här exemplet, tillsammans med försöksblocket, omsluter vi även undantagskod i ett fångstblock.

vårens moln

TryCatchExample7.java

 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Här kan vi se att fångstblocket inte innehöll undantagskoden. Så, bifoga undantagskod i ett försöksblock och använd endast catch-block för att hantera undantagen.

Exempel 8

I det här exemplet hanterar vi det genererade undantaget (Arithmetic Exception) med en annan typ av undantagsklass (ArrayIndexOutOfBoundsException).

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Exempel 9

Låt oss se ett exempel för att hantera ett annat okontrollerat undantag.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Testa det nu

Produktion:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Exempel 10

Låt oss se ett exempel för att hantera markerade undantag.

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
Testa det nu

Produktion:

 File saved successfully