En Java existen dos tipos básicos de Excepciones
Excepciones Checked: Objetos de la clase Exception o cualquier otra clase que hereda de ella (excepto si heredan de RuntimeException)
· Deben declararse en el método mediante la palabra throws
· Obligan al llamante a hacer un tratamiento de dicha excepción con un try/catch
Excepciones Unchecked: Objetos de la clase RuntimeException (o de cualquiera otra clase que herede de ella)
· No necesitan declararse en el método
· no obligan al que lo llama a hacer un tratamiento de dicha excepción.
Cuándo usar excepciones Checked o Unchecked
Checked Exceptions
· Las excepciones Checked son condiciones excepcionales del flujo del programa pero que no son debido a un error del propio programa.
· Por ejemplo si tenemos una función que borra ficheros y al ir a borrarlo dicho fichero ya no existe, lanzamos un FileNotFoundException indicando que el fichero no existe. Que el fichero no exista no es ningún error en el programa pero si una situación excepcional porque la mayoría de las veces cuando vayamos a borrarlo deberá estar el fichero si hemos acabado de seleccionarlo.
· Las Checked Exceptions forman parte del flujo lógico de nuestro programa y al programar debemos tenerlas en cuenta y tratarlas adecuadamente no viéndolas como un problema del que debemos deshacernos.
Unchecked Exceptions
· Una excepción unchecked es aquella que se lanza cuando hay un error en el programa.
· Por ejemplo en ejemplo de la división por cero es un error de programación que alguien nos pase como dividendo un cero, en ese caso lanzaremos un RuntimeException.
· Al ser las unchecked Exceptions errores en el programa poco o nada podemos hacer por arreglarlas (por eso no es obligatorio tratarlas con un try-catch). Lo único que podemos hacer en la mayoría de casos es hacer que el programa acabe fallando y que se muestre un mensaje de error al usuario, por lo que es mejor trasladar el error hasta la pantalla.
Formas erróneas de tratar las excepciones
· Perder la excepción original como en el ejemplo:
· Crear una excepción inútil
· Ignorar/perder la excepción:
A veces se sofistica y se logea!!
Truco para relanzar excepciones Checked como Unchecked:
A ver si te vale Javier 🙂
Imaginaos que en algún punto hice un try/catch ignorando la excepción y ahora me doy cuenta de que tengo que lanzarla, pero esto me implica cambiar la signatura del método puesto que tengo que hacer throws XXXException en su definición.
Existe un truco en Java para lanzar una excepción Checked como Unchecked, fijaos :):
Donde RelanzadorExcepciones:












Deja un comentario