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