Blocul de încercare Java
Java încerca bloc este folosit pentru a include codul care ar putea arunca o excepție. Trebuie utilizat în cadrul metodei.
Dacă apare o excepție la o anumită instrucțiune din blocul try, restul codului blocului nu se va executa. Așadar, se recomandă să nu păstrați codul în blocul try care nu va arunca o excepție.
Blocul de încercare Java trebuie să fie urmat fie de catch, fie de finally block.
Sintaxa lui Java try-catch
try{ //code that may throw an exception }catch(Exception_class_Name ref){}
Sintaxa blocului try-finally
try{ //code that may throw an exception }finally{}
Blocul de captură Java
Blocul Java catch este utilizat pentru a gestiona excepția prin declararea tipului de excepție în parametru. Excepția declarată trebuie să fie excepția clasei părinte (adică, Excepție) sau tipul de excepție generat. Totuși, abordarea bună este declararea tipului de excepție generat.
ouă de Paște în Android
Blocul catch trebuie folosit numai după blocul de încercare. Puteți utiliza mai multe blocuri catch cu un singur bloc de încercare.
Funcționarea internă a blocului try-catch Java
JVM-ul verifică în primul rând dacă excepția este gestionată sau nu. Dacă excepția nu este gestionată, JVM furnizează un handler implicit de excepție care efectuează următoarele sarcini:
- Imprimă descrierea excepției.
- Tipărește urmărirea stivei (Ierarhia metodelor în care a apărut excepția).
- Determină terminarea programului.
Dar dacă programatorul aplicației gestionează excepția, fluxul normal al aplicației este menținut, adică restul codului este executat.
Gestionarea problemei fără excepție
Să încercăm să înțelegem problema dacă nu folosim un bloc try-catch.
Exemplul 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'); } }Testează-l acum
Ieșire:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
După cum este afișat în exemplul de mai sus, restul codului nu este executat (în acest caz, restul codului declarația nu este tipărită).
Pot exista 100 de linii de cod după excepție. Dacă excepția nu este gestionată, tot codul de sub excepție nu va fi executat.
Soluție prin tratarea excepțiilor
Să vedem soluția problemei de mai sus printr-un bloc java try-catch.
Exemplul 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'); } }Testează-l acum
Ieșire:
java convertește caracterul în șir
java.lang.ArithmeticException: / by zero rest of the code
După cum este afișat în exemplul de mai sus, restul codului este executat, adică restul codului declarația este tipărită.
Exemplul 3
În acest exemplu, am păstrat și codul într-un bloc try care nu va arunca o excepție.
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); } } }Testează-l acum
Ieșire:
java.lang.ArithmeticException: / by zero
Aici, putem vedea că dacă apare o excepție în blocul try, restul codului blocului nu se va executa.
Exemplul 4
Aici, gestionăm excepția folosind excepția clasei părinte.
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'); } }Testează-l acum
Ieșire:
java.lang.ArithmeticException: / by zero rest of the code
Exemplul 5
Să vedem un exemplu pentru a tipări un mesaj personalizat la excepție.
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'); } } }Testează-l acum
Ieșire:
Can't divided by zero
Exemplul 6
Să vedem un exemplu pentru a rezolva excepția într-un bloc catch.
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)); } } }Testează-l acum
Ieșire:
25
Exemplul 7
În acest exemplu, împreună cu blocul try, includem și codul de excepție într-un bloc catch.
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'); } }Testează-l acum
Ieșire:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
Aici, putem vedea că blocul catch nu conține codul de excepție. Așadar, includeți codul de excepție într-un bloc try și utilizați blocul catch numai pentru a gestiona excepțiile.
Exemplul 8
În acest exemplu, gestionăm excepția generată (Excepție aritmetică) cu un alt tip de clasă de excepție (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'); } }Testează-l acum
Ieșire:
Exception in thread 'main' java.lang.ArithmeticException: / by zero
Exemplul 9
Să vedem un exemplu pentru a gestiona o altă excepție neverificată.
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'); } }Testează-l acum
Ieșire:
ce este hashmap java
java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code
Exemplul 10
Să vedem un exemplu pentru a gestiona excepția verificată.
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'); } }Testează-l acum
Ieșire:
File saved successfully