17.8 Manejo de excepciones y jerarquía de excepciones en Java

El manejo de excepciones es un aspecto fundamental en la programación Java, ya que permite a los programas lidiar con situaciones anormales de manera controlada. Una excepción en Java es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de instrucciones. Cuando se produce una excepción, el flujo del programa se transfiere a un bloque de código especial llamado "catch", que está diseñado para manejar esa excepción específica.

Jerarquía de excepciones en Java

Java utiliza una jerarquía de clases para definir excepciones, todas derivadas de la clase base Throwable. La jerarquía se divide en dos ramas principales: Error y Exception. Los errores son condiciones graves que una aplicación normalmente no debería intentar detectar, como los problemas de la máquina virtual Java (JVM). Las excepciones son condiciones que una aplicación puede y debe intentar detectar.

Las excepciones en Java se clasifican en dos categorías principales:

  • Excepciones marcadas: Estas son excepciones que deben manejarse o declararse en la firma del método. Estas excepciones se verifican en tiempo de compilación.
  • Excepciones no marcadas: Estas son excepciones que no necesitan ser manejadas o declaradas explícitamente. Incluyen subclases de RuntimeException y se verifican en tiempo de ejecución.

Es importante comprender esta jerarquía para saber cómo detectar y manejar diferentes tipos de excepciones de manera efectiva.

Detectar múltiples excepciones

En Java, es posible detectar múltiples excepciones en un solo bloque catch usando el operador de canalización (|). Esto puede simplificar el código y reducir la redundancia cuando diferentes excepciones se manejan de manera similar.


intentar {
    // Código que puede generar excepciones
} captura (IOException | SQLException ex) {
    // Manejo de IOException y SQLException
    System.out.println("Error al acceder al recurso externo: " + ex.getMessage());
}

Cuando detecta múltiples excepciones de esta manera, la variable de excepción (ex en el ejemplo anterior) es implícitamente final y no se le puede asignar otro valor dentro del bloque catch.

Buenas prácticas en el manejo de excepciones

Al gestionar excepciones, es importante seguir algunas buenas prácticas:

  • Maneje únicamente las excepciones que pueda manejar: No detecte excepciones genéricas como Exception o Throwable a menos que pueda manejar adecuadamente todas las excepciones posibles.
  • Evita tragar excepciones: No dejes los bloques catch vacíos o con un solo comentario. Esto puede dificultar mucho la depuración ya que se pierde la noción de la causa del problema.
  • Utilice excepciones personalizadas: cree sus propias clases de excepción si las excepciones estándar de Java no describen adecuadamente el problema que está intentando representar.
  • Documentar excepciones: use Javadoc para documentar las excepciones que su método puede generar, lo cual es especialmente importante para las excepciones marcadas.
  • Considere utilizar bloques finally: se ejecutan independientemente de si se produce una excepción o no, lo que los convierte en un lugar adecuado para liberar recursos, como cerrar conexiones de red. red o archivos.

Ejemplo de manejo de excepciones

Aquí hay un ejemplo más detallado de cómo manejar excepciones en Java:


clase pública EjemploExcecoes {
    público estático vacío principal (String [] argumentos) {
        intentar {
            // Código que puede generar excepciones
            resultado int = división(10, 0);
            System.out.println("Resultado: " + resultado);
        } captura (ArithmeticException ex) {
            // Manejo específico para ArithmeticException
            System.out.println("Error aritmético: " + ex.getMessage());
        } captura (NullPointerException ex) {
            // Manejo específico para NullPointerException
            System.out.println("Referencia nula: " + ex.getMessage());
        } captura (Excepción ex) {
            // Manejo de otras excepciones inesperadas
            System.out.println("Excepción inesperada: " + ex.getMessage());
        } finalmente {
            // Código ejecutado después de los bloques try/catch
            System.out.println("Bloque finalmente ejecutado.");
        }
    }

    división int estática pública (numerador int, denominador int) lanza ArithmeticException {
        devolver numerador/denominador;
    }
}

En este ejemplo, el método división puede generar una ArithmeticException si el denominador es cero. El bloque try detecta esta excepción y también otras dos posibles excepciones.excepciones, tratándolas de forma específica. El bloque finally se ejecuta al final, independientemente de si se lanzó una excepción o no.

Conclusión

El manejo de excepciones es una parte crítica de la programación Java. Comprender la jerarquía de excepciones y saber cómo detectar y manejar múltiples excepciones puede ayudarlo a crear programas más sólidos y confiables. Seguir las mejores prácticas y utilizar la sintaxis correcta es esencial para escribir código que sea fácil de mantener y depurar.

En nuestro curso completo de Java, aprenderá en detalle sobre cada tipo de excepción, cómo crear sus propias excepciones personalizadas y cómo aplicar las mejores prácticas de manejo de excepciones a sus proyectos. Este conocimiento es fundamental para convertirse en un desarrollador Java competente y preparado para afrontar los desafíos del desarrollo de software en el mundo real.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el manejo de excepciones en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Manejo de excepciones y jerarquía de excepciones en Java: seguimiento de pila y depuración de excepciones

Siguiente página del libro electrónico gratuito:

111Manejo de excepciones y jerarquía de excepciones en Java: seguimiento de pila y depuración de excepciones

4 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.