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