Está en la página 1de 4

Excepciones 04

JA
Bauman / Dcima

Java Electrotecnia
Excepciones
Java

Excepciones
El manejo de excepciones, es la capacidad de un programa para responder de alguna forma
predeterminada a los errores en tiempo de ejecucin no previstos a ocurrir (excepciones) en el momento
de diseo. Las capacidades del manejo de excepciones de Java son proporcionadas por las instrucciones
try, catch, throw y finally. La estructura bsica para el manejo de excepciones es la serie de
instrucciones try...catch.

La estructura try...catch
La estructura try...catch se explica mejor examinando primero un ejemplo simple. Considere el
siguiente cdigo:

public static double Dividir (double numerador, double denominador) {


try {
double resultado = numerador / denominador;
return resultado;
}
catch (ArithmeticException a) {
System.out.println("Ha ocurrido una excepcin matemtica");
return 0;
}
}

En este ejemplo, el mtodo Dividir probar el cdigo que se encuentra dentro del bloque try. Si el
resultado evala bien y la instruccin de retorno se ejecuta sin ningn problema, el mtodo termina y el
control regresa al cdigo que lo llam. Sin embargo, si hay una excepcin dentro de este bloque, el control
saltar inmediatamente a la instruccin catch. En este ejemplo, si la excepcin es de tipo
ArithmeticException, se desplegar un mensaje que indica que ha sucedido una excepcin aritmtica
y se regresara 0. Por ejemplo, si se intenta una divisin entre cero suceder una ArithmeticException
y se desplegara el mensaje.
Si son posibles tipos de excepciones adicionales, se pueden aadir instrucciones catch adicionales. El
nico requisito es que cada instruccin catch debe tener un tipo nico. Cuando sucede una excepcin
ser ejecutado el bloque catch que tenga el tipo asociado.
Cuando sucede una excepcin se dice que se dispara. Todas las excepciones estn derivadas de la
clase Throwable.
Si usted lista clases madre antes de las subclases, puede atrapar errores que no concuerdan con
ninguno de los tipos de las subclases. Por ejemplo, si introduce una excepcin de tipo Throwable, todos
los errores que no hayan sido atrapados en instrucciones catch anteriores sern atrapados, debido a que
Throwable es la clase madre de todas las excepciones. El ejemplo se ampla en el siguiente cdigo con
una excepcin para Throwable al final para todas las excepciones que no hayan sido atrapadas.

2 POLITECNICO
public static double Divider (double numerator, double denominator) {
try {
double result = numerator / denominator;
return result;
}
catch (ArithmeticException a) {
System.out.println("Ha ocurrido una excepsin matemtica");
return 0;
}
catch (Throwable t) {
System.out.println("Ha ocurrido algo inesperado");
Return 0;
}
}

La instruccin finally
A veces hay algo que debe ser realizado aunque suceda o no una excepcin. Por lo general, esto se
hace para liberar algn recurso externo despus de haberlo adquirido, para cerrar un archivo despus de
haberlo abierto o algo similar. Para asegurarse de que sucedan estas instrucciones obligatorias, aunque
haya una excepcin, puede usar la instruccin finally.

NOTA:
La diferencia principal entre el manejo de excepciones en C++ y Java es la instruccin finally. La
instruccin finally no es soportada por C++.

El siguiente ejemplo muestra el uso de la instruccin finally para asegurarse de que se cierre un
archivo abierto. En este ejemplo se ejecutara la instruccin f.close(), ocurra una excepcin o no:

ClaseArchivo f = new ClaseArchivo();

Try {
f.open(StringDirectorio)
... ... ... // operaciones de archivo adicionales
}

catch (ExcepcionErrorAbrirArchivo e) {
System.out.println("Error abriendo archivo");
}
catch (ExcepcionErrorEscribirArchivo e) {
System.out.println("Error escribiendo archivo");
}

... ... ... // instrucciones catch adicionales, de ser necesario

catch (Throwable e) {
System.out.println("Un error desconocido ha ocurrido");
}
finally {
f.close();
}

POLITECNICO 3
Excepciones
Java

En el ejemplo anterior, si hay alguna excepcin o error en el bloque try se ejecutara el bloque catch
adecuado. Despus de que haya sido manejada la excepcin se ejecutara el bloque finally, asegurando
el cierre del archivo.

Si no hay ninguna excepcin durante el bloque try, el bloque finally todava ser ejecutado y el
archivo ser cerrado. El bloque finally siempre se ejecuta, suceda una excepcin o no.

Uso de throw para crear una excepcin


La instruccin throw se usa para crear una excepcin. El siguiente ejemplo muestra el uso de throw:

System.out.print("Ahora");

try {
System.out.print(" es ");
throw new MiExcepcin();
System.out.print("Esto nunca se ejecutar");
}
catch (MiExcepcin e) {
System.out.print("El ");
}
System.out.print("momento.\n");

El ejemplo anterior imprimir:

Ahora es el momento.

Los controladores de excepciones pueden estar anidados. Por ejemplo, si un bloque catch contiene
una instruccin throw, la excepcin se propagara de regreso hacia los controladores anidados hacia el
siguiente nivel. Si no hay un controlador de nivel superior, el sistema manejara la excepcin, por lo
general, abortando el programa.

4 POLITECNICO

También podría gustarte