Java try ... catch (con ejemplos)

En este tutorial, aprenderemos sobre la declaración try catch en Java con la ayuda de ejemplos.

El try… catchbloque en Java se usa para manejar excepciones y evita la terminación anormal del programa.

Aquí está la sintaxis de un try… catchbloque en Java.

 try( // code ) catch(exception) ( // code )

El trybloque incluye el código que podría generar una excepción.

El catchbloque incluye el código que se ejecuta cuando ocurre una excepción dentro del trybloque.

Ejemplo: Java try … catch block

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Salida

 ArithmeticException => / por cero

En el ejemplo anterior, observe la línea,

 int divideByZero = 5 / 0;

Aquí, estamos tratando de dividir un número por cero . En este caso, ocurre una excepción. Por lo tanto, hemos incluido este código dentro del trybloque.

Cuando el programa encuentra este código, ArithmeticExceptionocurre. Y la excepción es capturada por el catchbloque y ejecuta el código dentro del catchbloque.

El catchbloque solo se ejecuta si existe una excepción dentro del trybloque.

Nota : En Java, podemos usar un trybloque sin un catchbloque. Sin embargo, no podemos usar un catchbloque sin un trybloque.

Prueba de Java … finalmente bloquear

También podemos usar el trybloque junto con un bloque finalmente.

En este caso, el bloque.

Ejemplo: prueba de Java … finalmente bloquear

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )

Salida

 Finalmente, el bloque siempre se ejecuta Excepción en el hilo "main" java.lang.ArithmeticException: / por cero en Main.main (Main.java:4)

En el ejemplo anterior, hemos utilizado el trybloque junto con el finallybloque. Podemos ver que el código dentro del trybloque está provocando una excepción.

Sin embargo, el código dentro del finallybloque se ejecuta independientemente de la excepción.

Java prueba … captura … finalmente bloquea

En Java, también podemos usar el bloque finalmente después del try… catchbloque. Por ejemplo,

 import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Salida

 Ingreso de declaración de prueba Excepción => Índice 5 fuera de límites para la longitud 5 Cierre de PrintWriter

En el ejemplo anterior, hemos creado una matriz llamada lista y un archivo llamado salida.txt. Aquí, estamos tratando de leer datos de la matriz y almacenarlos en el archivo.

Fíjate en el código

 for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )

Aquí, el tamaño de la matriz es 5y el último elemento de la matriz está en list(4). Sin embargo, estamos intentando acceder a elementos en a(5) y a(6).

Por lo tanto, el código genera una excepción que es capturada por el bloque catch.

Dado que el finallybloque siempre se ejecuta, hemos incluido código para cerrar el PrintWriterinterior del bloque.

Es una buena práctica utilizar el bloqueo final para incluir un código de limpieza importante, como cerrar un archivo o una conexión.

Nota : hay algunos casos en los que un finallybloque no se ejecuta:

  • Uso del System.exit()método
  • Se produce una excepción en el finallybloque
  • La muerte de un hilo

Múltiples bloques de captura

Para cada trybloque, puede haber cero o más catchbloques. Múltiples catchbloques nos permiten manejar cada excepción de manera diferente.

El tipo de argumento de cada catchbloque indica el tipo de excepción que puede manejar. Por ejemplo,

 class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Salida

 IndexOutOfBoundsException => Índice 10 fuera de límites para longitud 10

En este ejemplo, hemos creado una matriz de enteros arrde tamaño 10 .

Dado que el índice de la matriz comienza en 0 , el último elemento de la matriz está en arr(9). Note la declaración,

 arr(10) = 11;

Aquí, estamos tratando de asignar un valor al índice 10 . Por lo tanto, IndexOutOfBoundExceptionocurre.

Cuando ocurre una excepción en el trybloque,

  • La excepción se lanza al primer catchbloque. El primer catchbloque no maneja un IndexOutOfBoundsException, por lo que se pasa al siguiente catchbloque.
  • El segundo catchbloque del ejemplo anterior es el manejador de excepciones apropiado porque maneja un IndexOutOfBoundsException. Por tanto, se ejecuta.

Captura de múltiples excepciones

Desde Java SE 7 y versiones posteriores, ahora podemos detectar más de un tipo de excepción con un catchbloque.

Esto reduce la duplicación de código y aumenta la simplicidad y la eficiencia del código.

Cada tipo de excepción que puede manejar el catchbloque se separa mediante una barra vertical |.

Su sintaxis es:

 try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )

Para obtener más información, visite Java para detectar múltiples excepciones.

Declaración de Java try-with-resources

La declaración try-with-resources es una declaración try que tiene una o más declaraciones de recursos.

Su sintaxis es:

 try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )

El recurso es un objeto que se cerrará al final del programa. Debe declararse e inicializarse en la declaración try.

Pongamos un ejemplo.

 try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )

La declaración try-with-resources también se conoce como gestión automática de recursos . Esta declaración cierra automáticamente todos los recursos al final de la declaración.

Para obtener más información, visite la declaración java try-with-resources.

Articulos interesantes...