Manejo de errores en Java: try/catch y más allá — guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al manejo de errores en Java



En el mundo de la programación, los errores son inevitables. Surgen por diversas razones: entrada incorrecta del usuario, archivo no disponible, errores en la lógica del programa o fallos en la red. En el lenguaje Java, para gestionar estas situaciones existe un mecanismo potente y flexible: las excepciones (exceptions). El manejo correcto de errores no es solo una buena práctica, sino la clave para la estabilidad, confiabilidad y seguridad de tu aplicación.



En este artículo, analizaremos en detalle cómo funciona el manejo de errores en Java, comenzando con la construcción básica try/catch y terminando con técnicas avanzadas como try-with-resources y la creación de excepciones propias. Aprenderás en qué se diferencian las excepciones verificadas (checked) y no verificadas (unchecked), y cómo usarlas correctamente.



Fundamentos: la construcción try/catch y finally



Bloque try y catch



El corazón del manejo de excepciones en Java es la construcción try/catch. El código que puede lanzar una excepción se coloca dentro del bloque try. Si en este bloque ocurre una excepción, la ejecución se transfiere inmediatamente al bloque catch correspondiente, donde se maneja dicha excepción.



public class Main {    public static void main(String[] args) {        try {            int result = 10 / 0; // Esto provocará ArithmeticException            System.out.println("Resultado: " + result);        } catch (ArithmeticException e) {            System.out.println("Error: ¡división por cero!");            e.printStackTrace(); // Muestra la pila de llamadas para depuración        }        System.out.println("El programa continúa su ejecución...");    }}


Observa: la línea System.out.println("Resultado: " + result); no se ejecutará, ya que la excepción ocurrió antes. Sin embargo, el programa no "fallará": el control pasará al catch y la ejecución continuará después del bloque try/catch.



Múltiples bloques catch



Un bloque try puede tener varios bloques catch para manejar diferentes tipos de excepciones. Es importante recordar que las excepciones más específicas deben indicarse antes que las más generales.



try {    String str = null;    System.out.println(str.length()); // NullPointerException    int[] arr = new int[5];    arr[10] = 100;                   // ArrayIndexOutOfBoundsException} catch (NullPointerException e) {    System.out.println("NullPointerException: " + e.getMessage());} catch (ArrayIndexOutOfBoundsException e) {    System.out.println("ArrayIndexOutOfBoundsException: " + e.getMessage());} catch (Exception e) { // Manejador general para todas las demás excepciones    System.out.println("Error general: " + e.getMessage());}


Bloque finally



El bloque finally es un bloque especial que se ejecuta siempre, independientemente de si se lanzó una excepción o no. Es ideal para liberar recursos: cerrar archivos, conexiones a bases de datos o sockets.



import java.io.*;

public class FileExample { public static void main(String[] args) { FileInputStream file = null; try { file = new FileInputStream("test.txt"); int data = file.read(); System.out.println((char) data); } catch (FileNotFoundException e) { System.out.println("¡Archivo no encontrado!"); } catch (IOException e) { System.out.println("¡Error de entrada/salida!"); } finally { try { if (file != null) { file.close(); // Cerramos el archivo en cualquier caso } } catch (IOException e) { System.out.println("¡Error al cerrar el archivo!"); } } }}


Incluso si en el bloque try o catch

Blogs

Book Recommendations