Una excepción es un objeto que representa los detalles de un fallo en tiempo de ejecución.
Se utiliza para interrumpir el flujo normal del programa cuando ocurre una situación inesperada o errónea.

En Java, todas las excepciones derivan de la clase Throwable. En concreto, java.lang.Exception es una subclase directa de Throwable.


Tipos principales


Tratamiento de excepciones

El código que gestiona posibles fallos se llama rutina de tratamiento de excepción, y suele utilizar la estructura:

try {
// Código que puede fallar } catch (TipoDeExcepcion e) { // Manejo del error } finally {
// Código que se ejecuta siempre (opcional) }


Propagación de excepciones

Cuando una excepción no se captura en el método donde ocurre, se propaga hacia el método llamador.
Este proceso continúa hacia arriba en la pila de llamadas hasta que se encuentra un catch, o bien termina el programa si nadie la gestiona.

Para ello debe usarse la cláusula throws, que indica que un método puede lanzar una excepción que será propagada: public void leerArchivo() throws IOException { // ... }


Cláusula finally

La cláusula finally define un bloque que se ejecuta siempre, ocurra o no una excepción.
Es útil para liberar recursos como archivos abiertos, conexiones o memoria: