logo

Java try-catch blokk

Java prøv blokk

Java prøve blokk brukes til å omslutte koden som kan gi et unntak. Det må brukes innenfor metoden.

Hvis det oppstår et unntak ved den bestemte setningen i try-blokken, vil ikke resten av blokkkoden kjøres. Så det anbefales å ikke beholde koden i prøveblokken som ikke vil gi et unntak.

Java try-blokk må følges av enten catch eller endelig blokk.

Syntaks for Java try-catch

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

Syntaks for prøv-endelig blokk

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

Java-fangstblokk

Java catch block brukes til å håndtere unntaket ved å deklarere typen unntak innenfor parameteren. Det deklarerte unntaket må være det overordnede klasseunntaket (dvs. unntak) eller den genererte unntakstypen. Den gode tilnærmingen er imidlertid å erklære den genererte typen unntak.

streng sammenlignet med java

Fangstblokken må kun brukes etter prøveblokken. Du kan bruke flere fangstblokker med en enkelt prøveblokk.

Intern arbeid av Java try-catch blokk

Java try-catch blokk

JVM sjekker først om unntaket er håndtert eller ikke. Hvis unntaket ikke håndteres, gir JVM en standard unntaksbehandler som utfører følgende oppgaver:

  • Skriver ut unntaksbeskrivelse.
  • Skriver ut stabelsporet (hierarki av metoder der unntaket skjedde).
  • Fører til at programmet avsluttes.

Men hvis applikasjonsprogrammereren håndterer unntaket, opprettholdes den normale flyten til applikasjonen, det vil si at resten av koden kjøres.

Problem uten unntak håndtering

La oss prøve å forstå problemet hvis vi ikke bruker en try-catch-blokk.

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 nå

Produksjon:

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

Som vist i eksemplet ovenfor, er resten av koden ikke utføres (i et slikt tilfelle resten av koden erklæringen er ikke skrevet ut).

Det kan være 100 linjer med kode etter unntaket. Hvis unntaket ikke håndteres, vil ikke all koden under unntaket bli utført.

Løsning ved unntakshåndtering

La oss se løsningen på problemet ovenfor med en java try-catch-blokk.

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 nå

Produksjon:

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

Som vist i eksemplet ovenfor, er resten av koden er utført, dvs resten av koden uttalelsen skrives ut.

Eksempel 3

I dette eksemplet beholdt vi også koden i en prøveblokk som ikke vil gi et unntak.

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 nå

Produksjon:

 java.lang.ArithmeticException: / by zero 

Her kan vi se at hvis et unntak oppstår i prøveblokken, vil ikke resten av blokkkoden kjøres.

Eksempel 4

Her håndterer vi unntaket ved å bruke det overordnede klasseunntaket.

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 nå

Produksjon:

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

Eksempel 5

La oss se et eksempel for å skrive ut en tilpasset melding ved unntak.

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 nå

Produksjon:

 Can't divided by zero 

Eksempel 6

La oss se et eksempel for å løse unntaket i en catch-blokk.

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 nå

Produksjon:

 25 

Eksempel 7

I dette eksemplet, sammen med try-blokk, legger vi også unntakskode i en catch-blokk.

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 nå

Produksjon:

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

Her kan vi se at catch-blokken ikke inneholdt unntakskoden. Så legg ved unntakskode i en prøveblokk og bruk catch-blokk kun for å håndtere unntakene.

Eksempel 8

I dette eksemplet håndterer vi det genererte unntaket (Arithmetic Exception) med en annen type unntaksklasse (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 nå

Produksjon:

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

Eksempel 9

La oss se et eksempel for å håndtere et annet ukontrollert unntak.

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 nå

Produksjon:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Eksempel 10

La oss se et eksempel for å håndtere sjekket unntak.

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 nå

Produksjon:

 File saved successfully