logo

Bloque try-catch de Java

Bloque de prueba de Java

Java intentar El bloque se utiliza para encerrar el código que podría generar una excepción. Debe usarse dentro del método.

Si ocurre una excepción en una declaración particular en el bloque try, el resto del código del bloque no se ejecutará. Por lo tanto, se recomienda no mantener el código en el bloque try que no generará una excepción.

El bloque de prueba de Java debe ir seguido de un bloque catch o finalmente.

Sintaxis de Java try-catch

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

Sintaxis del bloque try-finally

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

bloque de captura de Java

El bloque catch de Java se utiliza para manejar la excepción declarando el tipo de excepción dentro del parámetro. La excepción declarada debe ser la excepción de la clase principal (es decir, Excepción) o el tipo de excepción generada. Sin embargo, el buen enfoque es declarar el tipo de excepción generada.

lista java vacía

El bloque catch debe usarse después del bloque try únicamente. Puede utilizar varios bloques catch con un solo bloque try.

Funcionamiento interno del bloque try-catch de Java

Bloque try-catch de Java

La JVM primero verifica si la excepción se maneja o no. Si no se maneja la excepción, JVM proporciona un manejador de excepciones predeterminado que realiza las siguientes tareas:

  • Imprime la descripción de la excepción.
  • Imprime el seguimiento de la pila (Jerarquía de métodos donde ocurrió la excepción).
  • Hace que el programa finalice.

Pero si el programador de la aplicación maneja la excepción, se mantiene el flujo normal de la aplicación, es decir, se ejecuta el resto del código.

Problema sin manejo de excepciones

Intentemos comprender el problema si no utilizamos un bloque try-catch.

Ejemplo 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'); } } 
Pruébalo ahora

Producción:

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

Como se muestra en el ejemplo anterior, el resto del código no se ejecuta (en tal caso, el resto del código declaración no se imprime).

Puede haber 100 líneas de código después de la excepción. Si no se maneja la excepción, no se ejecutará todo el código debajo de la excepción.

Solución mediante manejo de excepciones.

Veamos la solución del problema anterior mediante un bloque try-catch de Java.

Ejemplo 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'); } } 
Pruébalo ahora

Producción:

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

Como se muestra en el ejemplo anterior, el resto del código se ejecuta, es decir, el resto del código se imprime la declaración.

Ejemplo 3

En este ejemplo, también mantuvimos el código en un bloque de prueba que no generará una excepción.

cómo imprimir java

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); } } } 
Pruébalo ahora

Producción:

 java.lang.ArithmeticException: / by zero 

Aquí podemos ver que si ocurre una excepción en el bloque try, el resto del código del bloque no se ejecutará.

Ejemplo 4

Aquí, manejamos la excepción usando la excepción de clase principal.

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'); } } 
Pruébalo ahora

Producción:

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

Ejemplo 5

Veamos un ejemplo para imprimir un mensaje personalizado en caso de excepción.

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'); } } } 
Pruébalo ahora

Producción:

 Can't divided by zero 

Ejemplo 6

Veamos un ejemplo para resolver la excepción en un bloque 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)); } } } 
Pruébalo ahora

Producción:

 25 

Ejemplo 7

En este ejemplo, junto con el bloque try, también incluimos el código de excepción en un bloque 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'); } } 
Pruébalo ahora

Producción:

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

Aquí podemos ver que el bloque catch no contenía el código de excepción. Por lo tanto, incluya el código de excepción dentro de un bloque try y use el bloque catch solo para manejar las excepciones.

protocolos de capa de enlace de datos

Ejemplo 8

En este ejemplo, manejamos la excepción generada (Excepción aritmética) con un tipo diferente de clase de excepción (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'); } } 
Pruébalo ahora

Producción:

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

Ejemplo 9

Veamos un ejemplo para manejar otra excepción 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'); } } 
Pruébalo ahora

Producción:

 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Ejemplo 10

Veamos un ejemplo para manejar la excepción marcada.

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'); } } 
Pruébalo ahora

Producción:

 File saved successfully