Beruflich Dokumente
Kultur Dokumente
Pedro Corcuera
Dpto. Matemtica Aplicada y
Ciencias de la Computacin
Universidad de Cantabria
corcuerp@unican.es
Objetivos
Aprender el mecanismo de gestin de
excepciones
Aprender a lanzar y capturar excepciones
Comprender la diferencia entre excepciones
verificadas y no verificadas
Java
ndice
Qu es una excepcin?
Beneficios del sistema de gestin de
excepciones
Captura de excepciones con try-catch-finally
Lanzamiento de excepciones
Reglas en la gestin de excepciones
Jerarqua de la clase Exception
Excepciones verificadas y no verificadas
Creacin de clases exception propias
Aserciones
Java
Qu es una excepcin?
Evento excepcional, tpicamente un error que ocurre
en tiempo de ejecucin
Provoca una interrupcin en la ejecucin normal de
un programa
Ejemplos:
Ejemplo de excepcin
class DivByZero {
public static void main(String args[]) {
System.out.println(3/0);
System.out.println("Por favor imprime esto");
}
}
Java
10
11
12
13
Java
method1 {
errorCodeType error;
error = call method2;
if (error)
doErrorProcessing;
else
proceed;
}
errorCodeType method2 {
errorCodeType error;
error = call method3;
if (error)
return error;
else
proceed;
}
errorCodeType method3 {
errorCodeType error;
error = call readFile;
if (error)
return error;
else
proceed;
}
14
method1 {
try {
call method2;
} catch (exception e) {
doErrorProcessing;
}
}
method2 throws exception {
call method3;
}
method3 throws exception {
call readFile;
}
15
16
Java
17
Captura de excepciones:
sentencia try-catch
Sintaxis para capturar excepciones con try-catch:
try {
<codigo a monitorizar por excepciones>
} catch (<ExceptionType1> <ObjName>) {
<manejador si ocurre ExceptionType1 >
}
...
} catch (<ExceptionTypeN> <ObjName>) {
<manejador si ocurre ExceptionTypeN >
}
Java
18
Java
19
Java
20
21
22
Captura de excepciones:
palabra reservada finally
Contiene cdigo para limpieza despus de un trycatch. Se ejecuta independientemente de errores
Sintaxis try-catch-finally:
try {
<codigo a monitorizar por excepciones>
} catch (<ExceptionType1> <ObjName>) {
<manejador si ocurre ExceptionType1 >
} ...
} finally {
<codigo a ejecutar antes termine bloque try>
}
Java
23
Captura de excepciones:
palabra reservada finally
El cdigo del bloque finally se ejecuta siempre
una vez que se entra en un bloque try, incluso en:
Java
24
25
Java
26
Lanzamiento de excepciones:
palabra reservada throw
Java permite el lanzamiento o generacin de
excepciones
throw <objeto excepcion>;
Java
27
28
Sintaxis:
<tipo> <nombreMetodo> (<listaParametros>)
throws <listaExcepciones> {
<cuerpoMetodo>
}
Java
29
30
Clase Exception
Condiciones con las que los usuarios pueden tratar
Usualmente el resultado de defectos en el cdigo. Ejms:
Error por divisin por cero
Error por fuera de rango
Java
31
Clase Error
Clase Error
Usada por el runtime Java para gestionar errores que
ocurren el el entorno de tiempo real
Errores que estn fuera de control de los usuarios
Ejemplos
Errores de memoria
Disco duro roto
Java
32
Clases Error
Java
33
Clases Exception
Java
34
35
Excepciones unchecked
No estn sujetos a comprobacin en tiempo de
compilacin para la gestin de las excepciones
Clases exception unchecked empotradas
Error
RuntimeException
Java
36
Ejemplo:
public class MyCheckedException extends Exception {
//Se puede extender RuntimeException si es unchecked
}
Java
37
38
Asertos (assert)
Sentencias que permiten comprobar si el programa
se comporta como se espera
Informa a quien lee el cdigo que una condicin
particular siempre debe satisfacerse
La ejecucin del programa informa si los asertos
realizados son verdaderos o falsos
Si un aserto no es verdadero, se lanza AssertionError
39
40
Sintaxis de assert
Dos formas:
Forma simple:
assert <expresion1>;
donde
<expresion1> es la expresin a comprobar su veracidad
Otra forma:
assert <expresion1>:<expresion2>;
donde
<expresion1> es la expresin a comprobar su veracidad
<expresion2> es alguna informacin til en caso falla
Java
41
Java
42