Sie sind auf Seite 1von 23

Programacin Orientada a Objetos

Ing. Jos Castaeda Saldaa

AGENDA
y Qu es una excepcin y Criterios de uso de excepciones y Jerarqua de excepciones en Java (checked and

unchecked) y El bloque finally y Creando excepciones

Excepcin
El trmino excepcin (del ingls exception) es una abreviatura para la frase evento excepcional . Definicin: una excepcin es un evento que ocurre durante la ejecucin de un programa, que perturba el flujo normal de las instrucciones de un programa.

Creacin y Manejo de una Excepcin


Cuando un error ocurre dentro de un mtodo, el mtodo crea un objeto y se lo pasa al sistema en tiempo de ejecucin. El objeto, llamado excepcin, contiene informacin acerca del error, incluido su tipo y el estado del programa cuando el error ocurri. La creacin de una objeto excepcin y el paso del mismo al sistema en tiempo de ejecucin es llamado lanzar (throwing) una excepcin.
Mtodo donde ocurre el error Llamado al mtodo Mtodo sin manejador de excep. Llamado al mtodo Mtodo con manejador de excep. Llamado al mtodo main

Pila de llamados

Captura de Excepciones en Java


public class PruebaEmpleado{ private int calcularBonificacion(){ try{ Bloque de cdigo que puede generar una excepcin }catch(TipoExcepcion ex){ Bloque de cdigo de manejo de la excepcin } }

AGENDA
y Qu es una excepcin y Criterios de uso excepciones y Jerarqua de excepciones en Java y El bloque finally y Creando excepciones

Cuando Usar una Excepcin


El manejo de excepciones esta diseado para procesar errores sincronizados, que ocurren cuando una sentencia es ejecutaada. Ejemplos comunes de este caso son: indices de arreglos fuera de lmites, sobrecarga aritmtica (ej. Valores fuera del rango de representacin), divisiones por cero, parmetros de mtodos incorrectos, ubicacin de memoria insatisfactoria.

Cuando no Usar Excepciones


El manejo de excepciones no esta diseado para procesar problemas asociados con eventos asncronos (ej. Completar la lectura o escritura de disco, recepcin de mensajes de red, clicks del mouse o presin de teclas), que ocurren in paralelo con, e independientemente de, el control de flujo del programa.

AGENDA
y Qu es una excepcin y Cuando usar excepciones y Jerarqua de excepciones en Java y El bloque finally y Creando excepciones

Jerarqua de Excepciones

Tipo de Excepciones (1/2)


y Checked Exceptions: Estas son excepciones que

una aplicacin bien escrita debe anticipar y de la cual se debe recuperar. y Las Checked exceptions estn sujetas a ser capturadas (catch). y Todas las excepciones son checked exceptions, excepto aquellas indicadas por Error, RuntimeException y sus subclases.

Tipo de Excepciones (2/2)


Unchecked Exceptions: Estas excepciones se dividen en:
y Error: Estas son condiciones excepcionales que son

externas a la aplicacin, y que la aplicacin usualmente no puede anticipar y de la cual no se puede recuperar. y Runtime: Estas son condiciones excepcionales que son internas a la aplicacin, y que la aplicacin usualmente no puede anticipar y de la cual no se puede recuperar.

AGENDA
y Qu es una excepcin y Cuando usar excepciones y Jerarqua de excepciones en Java y El bloque finally y Creando excepciones

Uso de finally
public class PruebaEmpleado{ private int calcularBonificacion(){ try{ Bloque de cdigo que puede generar una excepcin }catch(TipoExcepcion ex){ Bloque de cdigo de manejo de la excepcin } finally{ Bloque de cdigo (ej. Cdigo de limpieza) } }

El Bloque finally
El bloque finally siempre se ejecuta cuando existe el bloque try. Esto asegura que el bloque se ejecute an si una excepcin inesperada ocurre. Pero finally es til no slo para el manejo de excepciones permite al programador evitar tener cdigo de limpieza que accidentalmente es ignorado por un return, continue, o break. Poniendo el cdigo de limpieza en el bloque finally es siempre una buena prctica, an cuando una excepcin no es anticipada.

AGENDA
y Qu es una excepcin y Cuando usar excepciones y Jerarqua de excepciones en Java y El bloque finally y Creando excepciones

Cuando Crear Excepciones?


Se debera crear clases excepcion si se responde afirmativamente a una de las siguientes preguntas; de otra forma probablemente se puede usar excepciones creadas por terceros: y Necesitas una excepcin que no esta representada en la plataforma Java?. y Ayudara a los usuarios si ellos pueden diferenciar tus excepciones de las lanzadas por otros? y Lanza tu cdigo ms de una excepcin relacionada? y Si usas la excepcion de alguien ms, tendrn los usuarios acceso a esas excepciones?

Ejemplo de Creacin de Excepciones (1/3)


Suponiendo que se esta escribiendo una clase linked list. La clase soporta entre otros los siguientes mtodos: y objetoEn(int n) Retorna el objeto en la posicin n. lanza una excepcin si el argumento es menor a cero o mayor que el nmero de objetos de la lista y primerObjeto() Retorna el primer objeto en la lista. Lanza una excepcin si la lista no contiene objetos. y indiceDe(Objeto o) Busca en la lista el objeto o y retorna su posicin. Lanza una excepcin si el objeto pasado al mtodo no esta en la lista.

Ejemplo de Creacin de Excepciones (2/3)


LinkedListException

IndiceInvalido Exception

ObjetoNoEncontradoException

ListaVaciaException

Posible Jerarqua de Clases de Excepcin

Ejemplo de Creacin de Excepciones (3/3)


Escogiendo una Superclase para la Jerarqua y Cualquier subclase de Exception puede ser usada como la clase padre de LinkedListException. Por otro lado, un rpido examen de esas subclases muestran que ellas son inapropiadas ya que son muy especializadas o completamente no relacionadas al LinkedListException. Por lo que la clase padre de LinkedListException debera ser Exception.

Ejercicio de Manejo de Excepciones


A continuacin pruebe el cdigo de la siguiente diapositiva ingresando diversos tipos de valores incluidos el cero como denominador y valores no nmericos.

Ejercicio de Manejo de Excepciones


Considere la ejecucin del siguiente programa: import java.io.*; public class DivisionPorCero { public static void main(String args[])throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int numerador,denominador,resultado; System.out.print("Ingrese el valor del numerador: "); numerador=Integer.parseInt(br.readLine()); System.out.print("Ingrese el valor del denominador: "); denominador=Integer.parseInt(br.readLine()); resultado=obtenerCociente(numerador,denominador); System.out.println("Resultado: "+numerador+"/"+denominador+" = "+resultado); } public static int obtenerCociente(int numerador,int denominador){ return numerador/denominador; } }

Referencias
y Como Programar en Java, Deitel & Deitel 7ma edicin y The Really Big Index,

http://download.oracle.com/javase/tutorial/collection s/intro/index.html

Das könnte Ihnen auch gefallen