¿Qué es una Excepción?

El tratamiento de excepciones es la forma que tiene Java de gestionar los errores que ocurren durante la ejecución de un programa. En lugar de que el programa se detenga abruptamente («se cuelgue»), Java permite capturar el error y decidir qué hacer.

1. ¿Qué es una Excepción?

Es un evento que ocurre durante la ejecución y que interrumpe el flujo normal de las instrucciones. Java las trata como objetos. Todas las excepciones derivan de la clase Throwable.  

2. Estructura try-catch-finally

Es el bloque fundamental para manejar errores:

  • try: Aquí se coloca el código que «podría» fallar (por ejemplo, abrir un archivo o dividir por cero).
  • catch: Si ocurre un error en el bloque try, el control pasa a este bloque. Aquí se define qué tipo de excepción queremos capturar y qué hacer con ella. Se pueden encadenar varios catch para distintos tipos de error.
  • finally: Este bloque es opcional. Su código siempre se ejecuta, ocurra o no una excepción. Es el lugar ideal para cerrar archivos o liberar recursos.  
3. Lanzamiento de excepciones: throw y throws

A veces, un método no debe solucionar el error, sino avisar a quien lo llamó de que algo ha ido mal:

  • throw: Se usa para lanzar manualmente una excepción (ej. throw new Exception("Error");).  
  • throws: Se pone en la firma del método para indicar que ese método puede lanzar ciertas excepciones y que quien lo use debe estar preparado para manejarlas.  
4. Tipos de Excepciones

Las excepciones se diferencian principalmente entre:

  • Excepciones comprobadas (Checked): El compilador te obliga a manejarlas (con try-catch) o a declararlas (con throws). Son errores ajenos al control directo del programa, como que un archivo no exista.
  • Excepciones no comprobadas (Unchecked): Derivan de RuntimeException. Suelen ser errores de lógica del programador (como acceder a un índice de un array que no existe) y el compilador no obliga a capturarlas.  
5. Creación de excepciones propias

Java permite crear clases de excepción personalizadas simplemente heredando de la clase Exception. Esto es útil para errores muy específicos de tu aplicación.