17.3 Manejo de excepciones y jerarquía de excepciones en Java: lanzamiento de excepciones

El manejo de excepciones es uno de los conceptos más importantes en la programación Java, ya que permite a los programas lidiar con situaciones anormales de manera controlada. Una excepción es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de instrucciones. El mecanismo de manejo de excepciones de Java es sólido y se basa en cinco palabras clave: try, catch, finally, throw y lanza.

Jerarquía de excepciones en Java

En Java, todas las clases de excepción son descendientes de la clase Throwable. La clase Throwable tiene dos subclases directas: Error y Exception. Los errores son condiciones graves que un programa normal no debería intentar detectar, como OutOfMemoryError. Las excepciones son condiciones que un programa debe detectar y manejar.

La clase Exception tiene muchas subclases que representan diferentes tipos de excepciones. Las excepciones en Java se dividen en dos categorías principales:

  • Excepciones marcadas: Estas son excepciones que deben manejarse o declararse en el código. Se verifican en tiempo de compilación. Los ejemplos incluyen IOException, SQLException, entre otros.
  • Excepciones no marcadas: Estas son excepciones que no necesitan ser manejadas o declaradas explícitamente. Se comprueban en tiempo de ejecución. Los ejemplos incluyen RuntimeException, NullPointerException, ArithmeticException, entre otros.

Lanzar excepciones

En Java, cuando queremos lanzar una excepción, usamos la palabra clave throw. Esto se hace cuando queremos indicar que un método ha encontrado una situación que no puede manejar. Para generar una excepción, debe crear una instancia de un objeto de la clase de excepción apropiada y pasarlo a la palabra clave throw.


intentar {
    // Código que puede generar una excepción
    si (alguna condición) {
        lanzar una nueva excepción ("Descripción de la excepción");
    }
} captura (Excepción e) {
    // Código para manejar la excepción
    e.printStackTrace();
}

Cuando lanzas una excepción, el flujo normal del programa se interrumpe y el control se transfiere al primer bloque catch compatible en la pila de llamadas. Si no hay ningún bloque catch que pueda manejar la excepción, el programa finalizará.

Manejo de excepciones

El manejo de excepciones se realiza utilizando los bloques try y catch. El bloque try contiene el código que puede generar una excepción, mientras que el bloque catch contiene el código que maneja la excepción. Podemos tener múltiples bloques catch para manejar diferentes tipos de excepciones.


intentar {
    // Código que puede generar una excepción
} captura (IOException e) {
    // Código para manejar IOException
} captura (SQLException e) {
    // Código para manejar SQLException
} captura (Excepción e) {
    // Código para manejar cualquier otra excepción
}

Es importante tener en cuenta que los bloques catch se evalúan en orden, y el primer bloque catch que sea compatible con el tipo de excepción lanzada es el que se ejecutado. Por lo tanto, los bloques catch para excepciones más específicas deben ir antes que los bloques para excepciones más generales.

La palabra clave finalmente

La palabra clave finally se utiliza para crear un bloque de código que se ejecutará independientemente de si se produce una excepción o no. Este bloque se utiliza generalmente para cerrar recursos, como archivos o conexiones de bases de datos, que se abrieron en el bloque try.


intentar {
    // Código que puede generar una excepción
} captura (Excepción e) {
    // Código para manejar la excepción
} finalmente {
    // Código que siempre será ejecutado, con o sin excepción
}

Propagar excepciones

A veces un método no puede o no debe manejar una excepción. En este caso, el método puede propagar la excepción al método que realiza la llamada utilizando la palabra clave throws en la declaración del método. Esto indica que el método puede generar una excepción del tipo especificado.


public void myMethod() lanza IOException {
    // Código que puede lanzar IOException
}

Cuando un método declara una excepción usando throws, cualquier otro método que llame a ese método debe manejar la excepción o declararla también.

Conclusión

El manejo de excepciones es esencial para crear programas robustos y confiables en Java. Comprender la jerarquía de excepciones y saber cómo lanzar, manejar y propagar excepciones son habilidades fundamentales para cualquierProgramador Java. Si sigue las mejores prácticas de manejo de excepciones, puede asegurarse de que su programa pueda manejar situaciones inesperadas con elegancia y continuar funcionando sin interrupciones.

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: tipos de excepciones (marcadas y no marcadas)

Siguiente página del libro electrónico gratuito:

106Manejo de excepciones y jerarquía de excepciones en Java: tipos de excepciones (marcadas y no marcadas)

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.