En algunos lenguajes orientados a objetos, cuando se ejecuta un programa pueden surgir algún
evento especial que pueden alterar el desarrollo normal del mismo, por ejemplo cuando el
resultado de un calculo falla por una definición numérica incorrecta o tratar de acceder a un
arreglo de datos fuera del limite, etc. A este tipo de error se le conoce como excepción y los
lenguajes orientados a objetos nos pueden ayudar para resolver estos problemas.
EXCEPCIONES
Las excepciones son las formas en que los programas
de Java manejan los diferentes errores que pueden
ocurrir. Puede pensarse en una excepción como en un
“error”.
Cuando una excepción ocurre decimos que fue
“lanzada”, y cuando manejamos dicha excepción, es
decir hacemos algo al respecto del error, decimos que
fue “capturada
El término excepción es un forma corta da la
frase “suceso excepcional” y puede definirse de la
siguiente forma: Una excepción es un evento que
ocurre durante la ejecución del programa que
interrumpe el flujo normal de las instrucciones
Condición anormal que se produce en una porción de código durante su
ejecución. Cuando aparece una condición excepcional se crea un objeto
Throwable que se envía al método que la ha generado. Permite la detección
y corrección de errores en ejecución. Se diferencia el código normal del
código de tratamiento de errores. Se usa cuando no se puede resolver la
situación anómala directamente en el contexto.
Tipos de situaciones
Excepciones: El programador proporciona el código que las trate.
Impiden completar la ejecución del código.
Errores: Situaciones de error normalmente no recuperables. El programador no
tiene porque proporcionar el código que las gestione
Runtime Exceptions: Son excepciones que se producen en el sistema de ejecución de Java. Tal
como usar referencias null, hacer una dividisión entre cero, acceder a un elemento inexistente
en un array
NonRuntime Exceptions: Son excepciones que se producen fuera del sistema de ejecución de
Java. Son ejemplo de estas las excepciones que se producen por acceso a archivos (IOExceptions)
En el segundo tipo de excepciones el compilador se asegura de que el programador maneje la
excepción (es decir, que cree un bloque try…catch)
La manera de distinguir ambos tipos de excepciones es mediante la clase de las que estas
extienden (si, todas las excepciones son clases). Las excepciones del tipo Runtime deben
extender de la clase RuntimeException, mientras lsas de tiopo NonRuntime deben extender de
Exception.
Excepciones comunes
IOException Generalmente fallas de entrada o salida, tal como la inhabilidad de leer desde un
archivo
NullPointerException: Referencia a un objeto NULL
NumberFormatException: Una conversión fallida entre Strings y números
OutOfMemoryException: Muy poca memoria para instanciar un objeto nuevo (new)
SecurityException: Un applet tratando de realizar una acción no permitida por la configuración de
seguridad del browser
StackOverflowException: El sistema corriendo fuera de espacio en Stack (stack space)
Errores
Además de las excepciones, en Java existen los Errores, clases parecidas a las excepciones, pero su
objetivo es informar de una situación anormal grave, algo así como situaciones que nunca
debieron ocurrir.
Son ejemplos de errores las clases: ThreadDeath VirtualMaSon ejemplos de errores las clases:
ThreadDeath VirtualMachineError AssertionError chineError AssertionError
Debido a que los Errores son “inesperados”, el compilador no exige al compilador que los capture.
Todos los Errores deben extender de la clase Error
Excepciones NonRuntime
Si tratáramos de compilar una clase que tuviera el siguiente método:
El compilador nos daría este error
Debido a que no estamos capturando la excepción FileNotFoundException que puede ser lanzada
Tipos de excepciones
Excepciones de sistema:
Cuando se realiza alguna operación no válida se lanza automáticamente.
Excepciones de programador:
Se define una clase que herede de Throwable o de Exception
Excepciones de usuario:
Gestiona la excepción mediante los bloques de código try, catch, finally
Indica que el código producirá una excepción que no se tratará dentro de él y se pasará al método
superior utilizando throws
Throws: A continuación de esta palabra aparece una lista de todas las excepciones que se pueden
dar dentro del método y no serán gestionadas.