EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse...

35
EXCEPCIONES UNIDAD 5

Transcript of EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse...

Page 1: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

EXCEPCIONES

UNIDAD 5

Page 2: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

EXCEPCION

Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento de división entre 0, un acceso a posiciones de un arreglo fuera de los limites del mismo o un fallo durante la lectura de datos de la entrada/salida

Page 3: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Mediante la captura de excepciones Java proporciona un mecanismo que permite al programa sobreponerse a estas situaciones, pudiendo el programador decidir las acciones a realzar para cada tipo de excepción que pueda ocurrir.

Page 4: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Excepciones vs Errores

• Además de las excepciones en un programa Java pueden producirse errores.

• Un error representa una situación anormal irreversible.

• Las excepciones se representan por una subclase de Exception, mientras los errores son subclase Error.

• Exception y Error son subclases de Throwable

Page 5: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Superclases de Excepciones y Errores

Object

Throwable

Exception Error

Page 6: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

CLASES DE EXCEPCIONES

Al producirse una excepcion en un programa, se crea un objeto de la subclase Exception a la que pertenece la excepcion.

Page 7: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Jerarquia de clases de excepcion

Excepcion

IO Excepcion SQL ExcepcionRuntime Exception

ArithmetcException

Null Pointer Exception

IndexOutOf Bounds Exception

ClassCast Exception...

Page 8: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

TIPOS DE EXCEPCIONES

Desde el punto de vista del tratamiento de una excepcion dentro de un programa las excepciones se dividen en dos grandes grupos:

• Excepciones marcadas

• Excepciones no marcadas

Page 9: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

EXCEPCIONES MARCADAS

• Son aquellas cuya captura es obligatoria. Este tipo de excepciones se producen al invocar ciertos métodos de determinadas clases y son generadas desde el interior de los métodos como consecuencia de un fallo durante la ejecución de los mismos.

• Todas las excepciones, excepto RuntimeException y sus subclases pertenecen a este tipo

Page 10: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Ejemplo de IO Exception. Esta excepcion es lanzada por el metodo readLine() de la clase BufferREader cuando se produce un error durante la ejecucion de la lectura, lo que obliga al programa que va a usar a capturar dicha excepcion.

Page 11: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Si en un bloque de codigo se invoca lagun metodo que produce una excepcion marcada y esta no se captura, el programa no compilara.

Page 12: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

CAPTURA DE UNA EXCEPCION

Los métodos que provocan excepciones marcadas deben de declarar estas en la definición del método.

Para declarar una excepción se utiliza la palabra thorws, seguidas pro las excepciones del método que puede provocar

Page 13: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

public String readLine() throws IOException

public void service (…) throws Servlet, IOException

Page 14: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Excepciones no marcadas

Pertenecen a este grupo todas las excepciones de tiempo de ejecución, es decir, RuntimeException y todas las subclases.

No es obligatorio capturar dentro de un programa Java una excepción no marcada. El motivo es que gran parte de ellas (NullPoinerException, ClassException, etc.) se producen como consecuencia de una mala programación, por lo que la solución es evitar que se produzca.

Page 15: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Las excepciones de tipo ArithmeticException es recomendable capturarlas.

Si durante la ejecución de un programa Java se produce una excepción y esta no es capturada, la Maquina virtual provoca la finalización inmediata del mismo, enviando a la consola el volcado de pila con los datos de la excepción a la consola

Page 16: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Ejemplo:

public class Division

{

public static void main(String[] argas)

{

int k=4/0;

}

}

C:\JBuilder9\ejercicios\pruebas\excepciones\classses> java Division Exception in thread “main java.lang.ArithmeticException: / by zero

C:\JBuilder9\ejercicios\pruebas\excepciones\classses> _

Volcado de pila

Page 17: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

CAPTURA DE EXCEPCIONES

El mecanismo de captura de excepciones Java permite atrapar el objeto de excepción lanzado por la instrucción e indicar las diferentes acciones a realizar según la clase de excepción producida.

Page 18: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Execpciones vs Errores

A diferencia de las excepciones, los errores representan fallos del sistema de los cuales el programa no se puede recuperar. Esto implica que no es obligatorio tratar un error en una aplicación Java.

Page 19: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Los bloques try..catch..finally

Las instrucciones try, catch y finally proporcionan una forma elegante y estructurada de capturar excepciones dentro de un programa Java evitando la ulizacion de instrucciones de control qeu dificultarian la lectura del codigo y lo harian mas propenso a errores.

Page 20: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Try

{

//instrucciones donde se pueden producir erores

}

catch (TipoException1 arg)

{

// Tratamiento excepcion1

}

Catch (Tipo excepcion2 arg)

{

//Tratamiento excepcion2

}

.

.

finally

{

// instrucciones de ultima ejecucion

}

Page 21: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

TRY

El bloque try delimita aquella o aquellas instrucciones donde se puede producir una excepción. Cuando esto sucede, el control del programa se transfiere al bloque catch definido para el tipo de excepción que se ha producido, pasándole como parámetro la excepción lanzada.

Opcionalmente se puede disponer de un bloque finally en el que se pueden definir un grupo de instrucciones de obligada ejecución.

Page 22: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

CATCH

Un bloque catch define las instrucciones que deberian de ejecutarse en caso que se produzca un determinado tipo de excepcion.

Page 23: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Utilizacion de catch

• Se pueden definir tantos bloques catch como se considere necesario. Cada bloque catch para tratar un tipo determinado de excepción.

• Un bloque catch sirve para capturar cualquier excepción que se corresponda con el tipo declarado

Page 24: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Se pueden definir tantos bloques catch como se considere necesario. (cada catch servira para tratar un tipo determinado de excepcion)

Page 25: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

public class excepcion

{

public static void main(String[] args)

{

try {

int s=4/0;

System.out.println("el programa sigue");

}

catch (ArithmeticException e)

{

System.out.println("Division por 0");

}

catch (Exception e)

{

System.out.println("Excepcion general");

}

System.out.println("final del main");

}

}

Page 26: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Tras la ejecucion de un bloque catch, el control del programa nunca se devuelve al lugar donde se produjo la excepcion.

En caso de que existan varios catch cuyas excepciones esten relacionadas por la herencia, los catch mas especificos deben ser situados por delante de los mas genericos, si no se producira un error.

Page 27: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

try{..}catch (IOException e){..}catch (Exception e){..}

try{..}catch (Exception e){..}catch (IOException e ){..}

Compila correctamente No compila

Error de compilacion

Page 28: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Si se produce una excepcion no marcada para la que no se ha definido bloque catch, esta sera propagada por la pila de llamadas hasta encontrar un punto donde se trate la excepcion.

Page 29: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Metodo 1

Metodo 2

Metodo n. .

Llada a metodo

Propagacion de la excepcion

Page 30: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

• Los bloques catch son opcionales. Siempre que exista un bloque finally, la creacion de un bloque catch de un try es opcional. Si no se cuenta con un bloque finally es necesario disponer del bloque catch.

Page 31: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Finally

Su uso es opcional, el bloque finally se ejecutara tanto si se produce una excepcion o no, garantizando que un conjunto de instrucciones siempre sean ejecutadas.

Page 32: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

public class excepcion

{

public static void main(String[] args)

{

try {

int s=4/0;

System.out.println("el programa sigue");

}

catch (ArithmeticException e)

{

System.out.println("Division por 0");

}

catch (Exception e)

{

System.out.println("Excepcion general");

}

finally

{

System.out.println(“ejecucion del finally");

}

System.out.println("final del main");

}

}

Page 33: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

Excepciones personalizadas

Page 34: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

public class Cajero

{

public static void main(String[] args)

{

Cuenta c=new Cuenta();

try

{

c.ingresar(100);

c.extraer(101);

}

catch (SaldoInsuficienteException e)

{

System.out.println(e.getMessage());

}

}

}

Page 35: EXCEPCIONES UNIDAD 5. EXCEPCION Una excepción es una situación anómala que puede producirse durante la ejecución de un programa, como puede ser un intento.

public class Cuenta

{

double saldo;

public Cuenta()

{

saldo= 0;

}

public void ingresar(double c)

{

saldo+=c;

}

public void extraer( double c)

throws SaldoInsuficienteException

{

if(saldo<c)

throw new SaldoInsuficienteException("numeros rojos");

else

saldo-=c;

}

public double getSaldo()

{

return saldo;

}

class SaldoInsuficienteException extends Exception

{

public SaldoInsuficienteException(String mensaje)

{

super(mensaje);

}

}

}