logo

Bloc try-catch de Java

Bloc de prova de Java

Java provar block s'utilitza per incloure el codi que podria llançar una excepció. S'ha d'utilitzar dins del mètode.

Si es produeix una excepció a la instrucció concreta del bloc try, la resta del codi del bloc no s'executarà. Per tant, es recomana no mantenir el codi al bloc try que no generarà una excepció.

El bloc try de Java ha d'anar seguit de catch o finally block.

Sintaxi de Java try-catch

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

Sintaxi del bloc try-finally

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

Bloc de captura de Java

El bloc catch de Java s'utilitza per gestionar l'excepció declarant el tipus d'excepció dins del paràmetre. L'excepció declarada ha de ser l'excepció de la classe pare (és a dir, l'excepció) o el tipus d'excepció generada. Tanmateix, el bon enfocament és declarar el tipus d'excepció generat.

caràcter a cadena

El bloc catch s'ha d'utilitzar només després del bloc try. Podeu utilitzar diversos blocs de captura amb un únic bloc de prova.

Funcionament intern del bloc try-catch de Java

Bloc try-catch de Java

La JVM comprova primer si l'excepció es gestiona o no. Si no es gestiona l'excepció, JVM proporciona un gestor d'excepcions predeterminat que realitza les tasques següents:

  • Imprimeix la descripció de l'excepció.
  • Imprimeix la traça de la pila (Jerarquia dels mètodes on s'ha produït l'excepció).
  • Fa que el programa finalitzi.

Però si el programador de l'aplicació gestiona l'excepció, es manté el flux normal de l'aplicació, és a dir, s'executa la resta del codi.

Tractament de problemes sense excepció

Intentem entendre el problema si no fem servir un bloc try-catch.

Exemple 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'); } } 
Prova-ho ara

Sortida:

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

Tal com es mostra a l'exemple anterior, el resta del codi no s'executa (en aquest cas, el resta del codi declaració no s'imprimeix).

Pot ser que hi hagi 100 línies de codi després de l'excepció. Si no es gestiona l'excepció, no s'executarà tot el codi que hi ha a sota de l'excepció.

Solució mitjançant tractament d'excepcions

Vegem la solució del problema anterior mitjançant un bloc java try-catch.

Exemple 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'); } } 
Prova-ho ara

Sortida:

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

Tal com es mostra a l'exemple anterior, el resta del codi s'executa, és a dir, el resta del codi s'imprimeix la declaració.

Exemple 3

En aquest exemple, també hem mantingut el codi en un bloc try que no llançarà cap excepció.

nova línia python

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); } } } 
Prova-ho ara

Sortida:

 java.lang.ArithmeticException: / by zero 

Aquí, podem veure que si es produeix una excepció al bloc try, la resta del codi del bloc no s'executarà.

Exemple 4

Aquí, gestionem l'excepció mitjançant l'excepció de classe pare.

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'); } } 
Prova-ho ara

Sortida:

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

Exemple 5

Vegem un exemple per imprimir un missatge personalitzat en cas d'excepció.

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'); } } } 
Prova-ho ara

Sortida:

 Can't divided by zero 

Exemple 6

Vegem un exemple per resoldre l'excepció en 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)); } } } 
Prova-ho ara

Sortida:

 25 

Exemple 7

En aquest exemple, juntament amb el bloc try, també inclourem el codi d'excepció en 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'); } } 
Prova-ho ara

Sortida:

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

Aquí, podem veure que el bloc catch no contenia el codi d'excepció. Per tant, tanqueu el codi d'excepció dins d'un bloc try i utilitzeu el bloc catch només per gestionar les excepcions.

Exemple 8

En aquest exemple, gestionem l'excepció generada (excepció aritmètica) amb un tipus diferent de classe d'excepció (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'); } } 
Prova-ho ara

Sortida:

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

Exemple 9

Vegem un exemple per gestionar una altra excepció no marcada.

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'); } } 
Prova-ho ara

Sortida:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Exemple 10

Vegem un exemple per gestionar l'excepció marcada.

compara la cadena java

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'); } } 
Prova-ho ara

Sortida:

 File saved successfully