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