Sie sind auf Seite 1von 23

Manejo de excepciones

Programacin Orientada a Objetos

Ma. de los Angeles Junco Rey

Excepciones


Cuando ejecutamos un programa en Java pueden


ocurrir situaciones de error, por ejemplo:






Divisin entre cero.


Abrir un archivo que no existe.
Raz cuadrada de un valor negativo.
Hacer un cast entre tipos incompatibles.
Utilizar un objeto que an no existe.

Ma. de los Angeles Junco Rey

Excepciones


Una excepcin es un objeto que es creado dentro de un mtodo


cuando ocurre una condicin de error. Este objeto es entregado
al mtodo que hizo la llamada.

Normalmente el objeto se inicializa con una cadena que incluye


informacin acerca del error generado.

Por tanto, el mtodo que hizo la llamada y recibe el objeto de


excepcin debe/puede cacharla y manejarla.

Ma. de los Angeles Junco Rey

Manejo de excepciones


Idealmente es posible detectar errores al momento


de compilacin


Existen errores que se detectan al momento de


ejecucin.


Excepciones tipo checked

Excepciones tipo unchecked

La filosofa de Java es:




Si un cdigo est mal hecho, no podr correr.

Ma. de los Angeles Junco Rey

Tipos de excepciones en Java

Checked,
las revisa el
compilador

Unchecked, no
las revisa el
compilador
Ma. de los Angeles Junco Rey

Ejemplos de excepciones en Java

Ma. de los Angeles Junco Rey

Error


La clase Error est relacionada con errores de


compilacin, del sistema o de la JVM (Java Virtual
Machine). Estos errores no suelen ser recuperables y
el programador no tendr por qu tratarlos.

Ma. de los Angeles Junco Rey

Exception


Como descendientes de esta clase podemos


distinguir:


RuntimeException (excepciones implcitas) y sus derivadas,


representan las excepciones que tiene lugar en la JVM, que el
propio JAVA comprueba durante la ejecucin, lanzando de forma
automtica la clase de Excepcin correspondiente . NO es
obligatorio tratar estas excepciones aunque s puede hacerse.

Las dems clases derivadas de Exception (excepciones explcitas),


que JAVA obliga a tratarlas.

Ma. de los Angeles Junco Rey

Manejo de excepciones


El manejo de excepciones permite a los programas


cachar y manejar los errores en el momento en que
se presentan en lugar de esperar a sufrir las
consecuencias.

Maneja errores sincrnicos.

El manejo de excepciones no est diseado para


controlar eventos asincrnicos como lecturas de
disco, mensajes que llegan de la red, clicks del ratn,
etc.
Ma. de los Angeles Junco Rey

Manejo de excepciones


Se utiliza en situaciones en las que el sistema se


puede recuperar de un error.

El procedimiento de recuperacin se llama


manejador de excepciones.

Se utiliza la sentencia


try / catch / finally

Ma. de los Angeles Junco Rey

Manejo de excepciones


try





incluye el cdigo que puede generar una


excepcin.
es seguido de uno o ms bloques catch.
cada bloque catch especifica el tipo de excepcin
que puede cachar y contiene al manejador de
excepcin.

Ma. de los Angeles Junco Rey

Manejo de excepciones


try


despus del ltimo bloque catch se puede colocar


un bloque finally.
el cdigo de finally se ejecuta siempre sin
importar si ocurre o no una excepcin.
finally se utiliza para liberar recursos.

Ma. de los Angeles Junco Rey

Manejo de excepciones


Cuando se lanza una excepcin el control del


programa deja el bloque try y busca al bloque catch
apropiado.

Ma. de los Angeles Junco Rey

Manejo de excepciones


Si no ocurre la excepcin, el bloque try termina, y el


flujo del programa continua despus del bloque
catch.

Si hay excepcin, el bloque try termina


inmediatamente y se ejecuta el bloque catch
(siempre y cuando el tipo de excepcin generada sea
compatible con el tipo del catch).

Ma. de los Angeles Junco Rey

Atrapando varios tipos de


excepciones


Si en un bloque try, se pueden generar varios tipos de excepciones,


podemos escribir varios bloques catch (uno para cada tipo)
try {
// cdigo que genera varios tipos de excepcin
} catch(Tipo1 e1) {
// manejo del primer tipo de error
} catch(Tipo2 e2) {
// manejo del segundo tipo de error
} catch(Tipo3 e3) {
....
}
Nota: Tipo1, Tipo2... Tipo3 deben aparecer de menor a mayor jerarqua
Ma. de los Angeles Junco Rey

Excepciones en Java 7


Java 7 introduce la siguiente sintaxis para atrapar mltiples


tipos de excepcin
try {
// cdigo que genera varios tipos de excepcin
} catch(Tipo1 | Tipo2 | Tipo3 e) {
// manejo de los errores
}

Ma. de los Angeles Junco Rey

Indica que esta funcin puede


lanzar una excepcin y que NO
se manejar aqu. Se lanzar al
mtodo que invoc esta
funcin y deber/podr
manejarla, dependiendo si es
verificada o no.

Ejemplo

public static double quotient( int numerador, int denominador)


throws ArithmeticException {
if (denominador == 0)
throw new ArithmeticException("Division entre cero");
return (double)numerador / denominador;
}

Cuando se encuentra la condicin de


error, se CREA la nueva excepcin y se
lanza

En caso de NO detectar error, se


continua con la ejecucin normal de la
funcin

Ma. de los Angeles Junco Rey

Creando tus excepciones




No es necesario limitarse a utilizar las excepciones


de Java.

Para ello, debes heredar de un tipo de excepcin


existente, preferentemente aquella que est lo ms
cerca, en significado, a la nueva excepcin.

Ma. de los Angeles Junco Rey

Excepciones de Java.lang





ClassNotFoundException
InterruptedException
NoSuchMethodException
RuntimeException





ArithmeticException
IndexOutOfBoundsExceptions
NegativeArraySizeException
NullPointerException

Ma. de los Angeles Junco Rey

Excepciones de Java.io


IOException







CharConversionException
EOFException
FileNotFoundException
InterruptedIOException
ObjectStreamException
UTFDataFomatException

Ma. de los Angeles Junco Rey

Especificando excepciones


Se especifica una excepcin colocando la palabra


reservada throws, despus del mtodo o clase que
puede lanzar una o ms excepciones, seguida de los
diferentes tipos de excepciones.

Si se declara que un mtodo ocasiona una excepcin


que tipo checked, es necesario manejarla de alguna
manera, de lo contrario el compilador te recordar
hacerlo.

Ma. de los Angeles Junco Rey

Ejemplo
public static double average throws
IllegalArgumentException(double [] arr) {
double sum = 0;
If (arr == null || arr.length == 0)
throw new IllegalArgumentException
(average(): arreglo invalido);
for (int i = 0; i < arr.length; i++)
sum += arr[i];
return sum/arr.length;

}
Ma. de los Angeles Junco Rey

El compilador
te recuerda
que debes
manejarla o
no?

Ejemplo cont
public static void main (String[] args) {
double [] arrA = {2.5, 5.0, 7.2, 8.1}, arrB = null;
try {
System.out.println(Promedio es + average(arrA));
System.out.println(Promedio es + average(arrB));
}
catch (IllegalArgumentException e) {
System.out.println(e);
}

Ma. de los Angeles Junco Rey

Das könnte Ihnen auch gefallen