Académique Documents
Professionnel Documents
Culture Documents
Tipos de excepciones
Según la jerarquía Throwable se encuentra en la parte superior después la siguen 2 grupos
Exception que dentro de esta se divide en subclases y Error que define excepciones no
esperadas por el programa en condiciones normales. El intérprete Java utiliza las excepciones
del tipo Error para indicar errores relacionados con el propio ambiente de ejecución.
Excepciones no capturadas
En el caso de una división por cero, genera un nuevo objeto de clase Exception, y lanza dicha
excepción. Esto da lugar a que se detenga la ejecución de Exc0, ya que excepción debe ser
capturada y tratada. Pero en el caso no se proporcionó gestores de excepciones propios, de
forma que la excepción es capturada por un gestor por defecto.
En la cual se mostrara el tipo de error y en cual línea de la pila se produjo ese error, además
que se presentara una subclase de la excepción de manera más específica en este caso será
ArithmeticExcepción.
Throw
También el propio programa puede lanzar explícitamente una excepción mediante la sentencia
thorw. La forma general de esta sentencia es la siguiente.
throw objeto Throwable;
Donde objetoThrowable debe ser un objeto del tipo Throwable o una subclase de Thorwable.
Se puede obtener un objeto de la clase Throwable de dos formas: utilizando un parámetro en
la cláusula catch, o creando un nuevo objeto con el operador new.
La ejecución del programa se para inmediatamente después de una sentencia throw; y
cualquiera de las sentencias que siguen no se ejecutarán. A continuación se inspecciona el
bloque try más próximo que la encierra, para ver si contiene una sentencia catch que coincida
con el tipo de excepción. Si es así, el control se transfiere a esa sentencia. Si es así, el control se
transfiere a esa sentencia. Si no, se inspecciona el siguiente bloque try que la engloba, y así
sucesivamente. Si no se encuentra una sentencia catch cuyo tipo coincida con el de la
excepción, entonces el gestor de excepciones por omisión interrumpe el programa e imprime
el trazado de la pila.
Throws
Si un método puede dar lugar a una excepción que no es capaz de gestionar él mismo, se debe
especificar este comportamiento de forma que los métodos que llamen al principio puedan
protegerse contra esta excepción. Para ello se incluye una cláusula throws en la declaración del
método. Una cláusula throws da un listado de los tipos de excepciones que le método podría
lanzar.Esto es necesario para toda las excepciones, excepto las del tipo Error o
RuntimeException, o cualquiera de sus subclases.
Todas las demás excepciones que un método puede lanzar se deben declarar en la cláusula
throws.Si esto no se hace así, el resultado es un error de compilación.
La forma general de la declaración de un método que incluye una sentencia throws es la
siguiente:-
tipo nombre_método(lista_de_parametros) throws lista_de_excepciones
{
// cuerpo del método
}
Donde, lista_de_excepciones es una lista de las excepciones que el método puede lanzar,
separadas por comas.
A continuación se muestra un programa incorrecto que trata de lanzar una excepción que no
captura. Como el programa no específica una sentencia throws que declare este hecho, no se
compilará.
finally
Cuando se lanzan excepciones, la ejecución dentro de un método sigue un camino no lineal y
bastante brusco que altera el flujo normal. Dependiendo de cómo se haya codificado el
método, puede incluso suceder que una excepción provoque que el método finalice de forma
prematura. Esto puede ser un problema en algunos casos.
finally crea un bloque de código que se ejecutará después de que se haya completado un
bloque try/catch y antes de que se ejecute el código que sigue al bloque try/catch. El bloque
finally se ejecuta independientemente de que se haya lanzado o no alguna excepción. Si se ha
coincida con la excepción. Cuando un método está a punto de devolver el control al método
llamante desde dentro de un bloque try/catch por medio de una excepción no capturada o de
una sentencia return explícita, se ejecuta también la cláusula finally justo antes de que el
método devuelva el control. Esta acción tiene utilidad para cerrar descriptores de archivos o
liberar cualquier otro recurso que se hubiera asignado al comienzo de un método con la
intención de liberarlo antes de devolver el control. La cláusula finally es opcional. Sin embargo,
cada sentencia try requiere, al menos, una sentencia catch o finally.