Está en la página 1de 8

Excepcin

JULIOANDRE 15/10/2012

Excepcin
Qu es una Excepcin?
Una excepcin es una condicin anormal ocurrida durante la ejecucin de un programa, no necesariamente es un error, sino ms bien un comportamiento no adecuado o no permitido; realmente se debera hablar de Eventos Excepcionales. A diferencia de otros lenguajes de programacin orientados a objetos, Java incorpora la gestin de excepciones, a travs de ciertas clases especiales.

Tipos de Excepciones
Fatales (errores): provocan la terminacin inmediata de un programa en ejecucin. Recuperables: pueden ser manipuladas, es decir, existe la posibilidad de corregirlas y continuar con la ejecucin del programa.

Excepciones en Java
Cuando ocurre una excepcin, se crea un objeto que contiene toda la informacin acerca de sta. El interpretador (JVM) debe encontrar el cdigo para manejarla (lanzar la excepcin). Si existe un cdigo definido para el tipo de excepcin, este cdigo atrapa la excepcin. Si no existe cdigo definido para este tipo de excepcin, el programa se termina.

Excepciones: Jerarqua

Clase Error
Est relacionada con los errores de compilacin, del sistema o de la JVM. Se emplea para casos graves de corrupcin del sistema, problemas

normalmente inmanejables para el programador, si no es esta la situacin, dichas situaciones se consideran como excepciones (Exception). Clase Throwable Las excepciones que heredan de Throwable pueden usar los mtodos siguientes: getMessage() - Extrae el mensaje asociado con la excepcin. toString() - Devuelve una cadena que describe la excepcin. printStackTrace() - Imprime la traza de ejecucin hasta el mtodo donde se lanz la Excepcin.

Excepciones varias
ClassNotFoundException IllegalAccessException FileNotFoundException ArithmeticException IndexOutOfBoundsException NullPointerException IOException EOFException OutOfMemoryException

Ventajas
Separacin del cdigo regular y el manejo de excepciones. Propagacin de los errores hacia arriba en la Pila de llamados (Stack). Agrupamiento de las excepciones y diferenciacin entre ellas.

Manejador de Excepciones
Sirve para:

Procesar solamente situaciones excepcionales donde un mtodo no podra completar su tarea debido a que no posee el control. Procesar excepciones que vienen desde componentes de programa que no tienen la capacidad de manejarlas. Procesar excepciones desde componentes de software tales como mtodos, libreras y clases de amplio uso y que no pueden manejar sus propias excepciones. En proyectos grandes para manejar las excepciones de una manera uniforme en todo el proyecto.

Manejar Excepciones
El manejo de una Excepcin en Java, se realiza a travs de las palabras reservadas: try : Las instrucciones contenidas en un bloque try, lanzarn la excepcin si sta ocurre. catch: Atrapa la excepcin lanzada y la maneja. throw: lanza la excepcin en el momento deseado. throws: lanza la excepcin fuera del mtodo. finally: instrucciones que siempre se ejecutan.

Lanzar Excepciones (try)


Cuando en un mtodo es probable que se produzca una situacin anmala, es necesario lanzar una excepcin y para ello se utiliza el bloque try. Sintaxis: try { //sentencias que se desea controlar }

Atrapar Excepciones (catch)


Las excepciones pueden ser capturadas y gestionadas en el mismo mtodo que las lanz o en otro lugar del programa.

Para atrapar la excepciones en el propio mtodo se utiliza la instruccin catch. Sintaxis: catch (excepcin objeto){ // sentencias para manejar la excepcin } Se debe escribir inmediatamente despus del bloque try. Puede haber varios bloques catch para un bloque try, y cada bloque catch manejar un tipo de excepcin.

Bloque try-catch
try { .... } catch (exception 1) { ... } catch (exception 2) { } catch (exception 3) { } ... Ejemplo: try ... catch ... String frase = new String(); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); try { // Se lee toda una lnea ingresada por teclado frase = br2.readLine(); frase = frase.toUpperCase(); System.out.println(cadena leida: + frase);

}catch(IOException ex){ // imprimir un mensaje cuando ocurra la excepcin System.out.println(e.getMessage()); } ...

Bloque finally
Este bloque es opcional y debe ir despus de todos los bloques catch implementados. Si se incluye, sus sentencias se ejecutan siempre, sea cual sea el tipo de excepcin que se produzca, o incluso si no se produce ninguna (se ejecuta incluso si dentro de los bloques try/catch hay una sentencia continue, break o return). El bloque finally se debe utilizar particularmente en aquellos casos en que, se necesita recuperar o devolver a su situacin original algunos elementos (objetos, recursos).

Bloque finally (cont.)


Sintaxis: try { // Cdigo que puede lanzar una excepcin de tipo A, B o C } catch (A a1) { // Se ocupa de la excepcin A } catch (B b1) { // Se ocupa de la excepcin B } catch (C c1) { // Se ocupa de la excepcin C

} finally { // Sentencias que se ejecutarn en cualquier caso }

Ejemplo 1: finally
... finally { If (out != null) { System.out.println("cerrando archivo ..."); Out.close(); } else { System.out.println("archivo no abierto !"); } }

Throw
La sentencia throw (lanzar) se puede emplear para indicar que Ha ocurrido una excepcin, particularmente cuando se quiere Lanzar una excepcin propia. Throw requiere un simple argumento: un objeto de la clase Throwable, esta clase tiene dos subclases principales: exception Y error.

Throw (cont)
Sintaxis: Public void metodo(int numero){ If(numero > 100) { Throw new ioexception (); }

Else ... }

Relanzar excepciones throws


En ciertos casos, cuando un mtodo puede generar una situacin anmala, y no se desea manipular la excepcin en el cdigo del propio mtodo, es posible que se pase o se relance la excepcin al mtodo invocador, para ello se utiliza la sentencia throws. Sintaxis: void metodo() throws excepcion{ // Cdigo que puede lanzar las excepciones ... } // fin del mtodo

Excepciones propias
A pesar de la gran cantidad de clases que Java posee para el manejo de excepciones, se permite la creacin de excepciones propias al programador. Normalmente se crean nuevas excepciones cuando las clases que posee Java no contemplan el manejo de una situacin anmala particular. Para crear las excepciones propias se hereda de la clase Exception o de una de sus subclases. Excepciones propias (cont) La clase Exception, normalmente tiene dos constructores. Ejemplo: public class MiExcepcion extends Exception{ public MiExcepcion() { super(); } public MiExcepcion(String cadena) { super(cadena); } } // fin de la clase