El <TipoExcepción> es un objeto que se instancia a partir de la clase correcta
(Throwable o alguna de sus subclases), justo en el momento de producirse el error, y
contiene información de la excepción producida.
Programación avanzada
En la estructura jerárquica de la librería de clases de Java, tenemos las clases que
implementan cada uno de los distintos tipos de error:
Java.lang.Throwable
Exception
RuntimeException
ArithmeticException
NullPointerException
NumberFormatException
ArrayIndexOutOfBoundsException
ClassNotFoundException
IOException
EOFException
Error
La clase raíz es Throwable, la cual tiene dos subclases que clasifican los dos
grupos de tipos error posibles:
Exception: son los errores habituales, capturables por el usuario. De esta
clase se derivan otras subclases, e incluso podemos derivar nosotros nuestras
propias clases.
Error: son errores graves, en los que conviene no capturar su excepción y
dejar que aborte el programa de forma anormal. Suelen ser errores de
ejecución de la JVM.
Cuando se produce un error, se mira si hay una manejador para dicha excepción
en el método donde se ha producido. Si no se captura la excepción, se va retornando en
la pila de llamadas, hasta llegar a la función main() si no se hubiese capturado en
ninguna las funciones o métodos. Si en esta función tampoco se captura la excepción, se
ejecutará el manejador de excepciones por defecto, que consiste en abortar el
programa mostrando un mensaje significativo del error y el lugar donde se ha producido
(clase, método, número de línea, pila de llamadas, etc.).
Cuando utilizamos las clases de Java (o nuestras), hay métodos que lanzan una
excepción (throw). Dependiendo del tipo de excepción estaremos obligados a capturar
la excepción generada o no. Por esto, debemos distinguir dos tipos de excepciones:
• Excepciones implícitas: no estamos obligados a capturarlas.
Son todas las de RuntimeException y Error.
• Excepciones explícitas: si estamos obligados a capturarlas.
Son ClassNotFoundException, IOException y EOFException.
Generación de errores
Programación avanzada
Otra posibilidad que tenemos en la gestión de errores es provocarlos de forma
explícita. Para ello utilizaremos las palabras clave: throw y throws.
Vimos que la declaración de un método tenía la siguiente sintáxis:
[<Modif. método>] <TipoRetorno> <NombreMetodo> ( [<ListaParámetros>] ) [throws <Excepciones>]
{
// Variables locales
...
// Instrucciones o sentencias
...
return (<Expresión>);
}
No hay comentarios:
Publicar un comentario