Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Dominando el manejo de excepciones en Java: Try, Catch, Finally, Throw y Throws explicados

Dominando el manejo de excepciones en Java

Esta guía recorre los mecanismos de manejo de excepciones de Java —try‑catch, finally, throw y throws— con ejemplos claros y consejos de mejores prácticas.

En la lección anterior introdujimos las excepciones en Java y por qué interrumpen el flujo del programa. Manejar esas excepciones con gracia es esencial para código robusto y mantenible.

A continuación están las estrategias principales para gestionar excepciones en Java:


1. Usando un bloque try…catch

La construcción try…catch es la piedra angular del modelo de manejo de errores de Java. Coloca cualquier código que pueda lanzar una excepción dentro del bloque try, y atrapa excepciones específicas después.

try { // código que podría lanzar } catch(Exception e) { // manejar excepción }

La cláusula catch es obligatoria siempre que aparezca un bloque try; intercepta la excepción y te permite responder apropiadamente.

Ejemplo: Manejando una ArithmeticException

class Main { public static void main(String[] args) { try { int divisionPorCero = 5 / 0; System.out.println("Resto del código en bloque try"); } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } } }

Salida

ArithmeticException => / by zero

En este fragmento, la división por cero dispara una ArithmeticException. La excepción es atrapada, el bloque catch se ejecuta, y cualquier código siguiente a la excepción dentro del bloque try se omite.

Si el bloque try completa sin lanzar, el bloque catch es simplemente omitido.


2. Aprovechando el bloque finally

Un bloque finally siempre se ejecuta, independientemente de si se lanzó una excepción. Es el lugar ideal para tareas de limpieza —cerrar archivos, liberar recursos o logging.

Solo un bloque finally puede acompañar una sentencia try dada.

try { // código } catch (TipoExcepcion1 e1) { // manejar } finally { // siempre ejecutado }

Ejemplo: finally después de una excepción

class Main { public static void main(String[] args) { try { int divisionPorCero = 5 / 0; } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } finally { System.out.println("Este es el bloque finally"); } } }

Salida

ArithmeticException => / by zero Este es el bloque finally

El bloque finally se ejecuta después del bloque catch, asegurando que el código crítico de limpieza se ejecute incluso si ocurre una excepción.

Mejor práctica: Usa finally para cualquier código que deba ejecutarse independientemente del éxito o fallo, como cerrar streams o resetear estado compartido.


3. Lanzando excepciones explícitamente y declarando Throws

La palabra clave throw te permite lanzar una excepción manualmente. Cuando se lanza, el control salta directamente al bloque catch coincidente más cercano.

Ejemplo: Usando throw

class Main { public static void dividirPorCero() { throw new ArithmeticException("Intentando dividir por 0"); } public static void main(String[] args) { dividirPorCero(); } }

Salida

Exception in thread "main" java.lang.ArithmeticException: Intentando dividir por 0 at Main.dividirPorCero(Main.java:5) at Main.main(Main.java:9)

La cláusula throws, por otro lado, declara que un método podría propagar ciertas excepciones chequeadas. Señala a los llamadores que deben manejar o propagar la excepción.

Ejemplo: Usando throws con I/O de archivos

import java.io.*; class Main { // Declarar que este método puede lanzar IOException public static void encontrarArchivo() throws IOException { File nuevoArchivo = new File("test.txt"); FileInputStream stream = new FileInputStream(nuevoArchivo); } public static void main(String[] args) { try { encontrarArchivo(); } catch (IOException e) { System.out.println(e); } } }

Salida

java.io.FileNotFoundException: test.txt (El sistema no puede encontrar el archivo especificado)

Si el archivo no existe, FileInputStream lanza FileNotFoundException, que es una subclase de IOException. Como encontrarArchivo() declara throws IOException, el método main debe manejarlo.

Cuando un método no atrapa una excepción internamente, debes declararla con throws para informar a los llamadores del fallo potencial.

Para mayor profundidad, explora la documentación de Java sobre throw y throws.

Java

  1. Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
  2. Comentarios en Java: Tipos, Uso y Mejores Prácticas
  3. Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
  4. Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
  5. Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
  6. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  7. Dominando el manejo de excepciones en Java: Try, Catch, Finally y Recursos
  8. Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
  9. Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
  10. Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
  11. Java Static explicado: Variables, métodos y bloques – Ejemplos prácticos