Sistema de Excepciones en Java. Exception
En casi todos los lenguajes de programación existen mecanismos para actuar según sucedan errores de cualquier tipo, desde accesos al disco hasta división por cero, los cuales de no ser manipulados por nuestro programa tendrán el comportamiento por defecto de la máquina virtual de java, que es reportarlos como excepciones y terminar el programa. Cuando se produce una excepción, el comportamiento por defecto es la interrupción de la ejecución del programa y el envío de la traza de error (llamado también volcado de pila) a la consola de error, indicándose el tipo de excepción producida y la línea de código donde ha tenido lugar.
Clases de exception:
Como se acaba de indicar, una excepción está representada en código por un objeto, objeto que pertenecerá a alguna de las clases de excepción existentes en Java y que representan a los distintos errores que se pueden producir en un programa.
La superclase de todas las clases de excepción es Throwable, de la cual derivan a su vez dos clases:
. Error. Las excepciones de tipo Error representan errores de la máquina virtual java, como por ejemplo un fallo en uno de los módulos nativos, una falta de memoria por parte del sistema, etc., por lo que este tipo de excepción no debe ser capturada por el código de la aplicación.
. Exception. Representa a las excepciones propiamente dichas, es decir, fallos en el programa producidos por algún error del código, un uso incorrecto de algún método o, simplemente, porque tiene lugar una situación inesperada. La figura 2 muestra la jerarquía de clases con algunas de las excepciones que se pueden producir en un programa Java.
Captura de excepciones:
La captura de excepciones consiste en "atrapar" mediante código el objeto de excepción generado al producirse esta y, mediante un bloque de sentencias específico, definir las acciones para el tratamiento del mismo. Para ello usaremos los bloques "Try/catch/Finally" que hemos explicado un poco mas arriba.
Métodos de la clase exception:
La clase Exception proporciona una serie de métodos que son heredados por todas las clases de excepción. Entre estos métodos, hay algunos de ellos que nos permiten obtener información sobre la excepción producida, lo cual puede resultar de interés en el bloque catch de captura de la excepción. Entre ellos destacamos: