logo

Java try-catch blok

Java prøv blok

Java prøve blok bruges til at omslutte koden, der kan give en undtagelse. Det skal bruges inden for metoden.

Hvis der opstår en undtagelse ved den bestemte sætning i try-blokken, vil resten af ​​blokkoden ikke udføres. Så det anbefales ikke at beholde koden i prøveblok, der ikke vil give en undtagelse.

Java try-blok skal efterfølges af enten catch eller endelig blok.

Syntaks for Java try-catch

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

Syntaks for prøv endelig blok

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

Java-fangstblok

Java catch-blok bruges til at håndtere undtagelsen ved at erklære typen af ​​undtagelse i parameteren. Den erklærede undtagelse skal være den overordnede klasseundtagelse (dvs. Undtagelse) eller den genererede undtagelsestype. Men den gode tilgang er at erklære den genererede type undtagelse.

gimp eksport som jpg

Fangstblokken må kun bruges efter prøveblokken. Du kan bruge flere catch-blok med en enkelt forsøgsblok.

Intern drift af Java try-catch blok

Java try-catch blok

JVM kontrollerer først, om undtagelsen er håndteret eller ej. Hvis undtagelsen ikke håndteres, leverer JVM en standard undtagelseshåndtering, der udfører følgende opgaver:

  • Udskriver undtagelsesbeskrivelse.
  • Udskriver staksporet (hierarki af metoder, hvor undtagelsen fandt sted).
  • Får programmet til at afslutte.

Men hvis applikationsprogrammøren håndterer undtagelsen, opretholdes applikationens normale flow, dvs. resten af ​​koden udføres.

Problem uden undtagelse håndtering

Lad os prøve at forstå problemet, hvis vi ikke bruger en try-catch-blok.

Eksempel 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'); } } 
Test det nu

Produktion:

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

Som vist i ovenstående eksempel er resten af ​​koden ikke udføres (i et sådant tilfælde resten af ​​koden erklæring er ikke udskrevet).

Der kan være 100 linjer kode efter undtagelsen. Hvis undtagelsen ikke håndteres, vil al koden under undtagelsen ikke blive udført.

Løsning ved undtagelseshåndtering

Lad os se løsningen af ​​ovenstående problem med en java try-catch blok.

Eksempel 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'); } } 
Test det nu

Produktion:

fuld form af i d e
 java.lang.ArithmeticException: / by zero rest of the code 

Som vist i ovenstående eksempel er resten af ​​koden udføres, dvs resten af ​​koden erklæring udskrives.

Eksempel 3

I dette eksempel holdt vi også koden i en prøveblok, der ikke vil give en undtagelse.

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); } } } 
Test det nu

Produktion:

 java.lang.ArithmeticException: / by zero 

Her kan vi se, at hvis der opstår en undtagelse i try-blokken, vil resten af ​​blokkoden ikke køre.

Eksempel 4

Her håndterer vi undtagelsen ved hjælp af den overordnede klasseundtagelse.

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'); } } 
Test det nu

Produktion:

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

Eksempel 5

Lad os se et eksempel for at udskrive en brugerdefineret besked ved undtagelse.

TryCatchExample5.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'); } } } 
Test det nu

Produktion:

 Can't divided by zero 

Eksempel 6

Lad os se et eksempel for at løse undtagelsen i en catch-blok.

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)); } } } 
Test det nu

Produktion:

 25 

Eksempel 7

I dette eksempel, sammen med try-blok, omslutter vi også undtagelseskode i en catch-blok.

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'); } } 
Test det nu

Produktion:

jquery forælder
 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Her kan vi se, at catch-blokken ikke indeholdt undtagelseskoden. Så vedlæg undtagelseskode i en prøveblok og brug kun catch-blok til at håndtere undtagelserne.

Eksempel 8

I dette eksempel håndterer vi den genererede undtagelse (Arithmetic Exception) med en anden type undtagelsesklasse (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'); } } 
Test det nu

Produktion:

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

Eksempel 9

Lad os se et eksempel for at håndtere en anden ukontrolleret undtagelse.

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'); } } 
Test det nu

Produktion:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Eksempel 10

Lad os se et eksempel for at håndtere kontrolleret undtagelse.

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'); } } 
Test det nu

Produktion:

 File saved successfully