La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.

Presentaciones similares


Presentación del tema: "Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005."— Transcripción de la presentación:

1 Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005

2 Excepciones

3 Excepciones (I) Interrupciones de ejecución y/o saltos dentro de un programa de manera independiente a su localización. El salto va acompañado de cierta información referente a la excepción (p.e. tipo de excepción, motivo…). Utilidad principal: Tratamiento de errores. –throw : Lanza una excepción y envía información sobre el error ocurrido. –catch : Recoge la excepción y la información enviada.

4 Excepciones (y II) try {... obj.f ();... } catch (DivisionCero obj) {... } void f () throws DivisionCero {... if (...) throw new DivisionCero (x, y);... }

5 Ejemplo desarrollado (I) Lanzamiento de excepciones: class CuentaBancaria {... boolean bloqueada;... void retirar (long cantidad) throws SaldoInsuficiente, CuentaBloqueada { if (bloqueada) throw new CuentaBloqueada (numero); else if (cantidad > saldo) throw new SaldoInsuficiente (numero, saldo); else saldo -= cantidad; }

6 Ejemplo desarrollado (II) Clases para excepciones: class SaldoInsuficiente extends Exception { long numero, saldo; SaldoInsuficiente (long num, long s) { numero = num; saldo = s; } String descripcion () { return "Saldo insuficiente en cuenta " + numero + "\nDisponible: " + saldo; } class CuentaBloqueada extends Exception { long numero; CuentaBloqueada (long num) { numero = num; } String descripcion () { return "La cuenta " + numero + " esta bloqueada"; }

7 Ejemplo desarrollado (III) Captura y procesamiento de excepciones: static public void main (String args[]) { try { new CuentaBancaria ().retirar (100000); } catch (SaldoInsuficiente excep) { System.out.println (excep.descripcion ()); } catch (CuentaBloqueada excep) { System.out.println (excep.descripcion ()); } Se ejecuta el primer catch de tipo compatible

8 Ejemplo desarrollado (y IV) ¿Y si no se capturan las excepciones? static public void main (String args[]) throws CuentaBloqueada, SaldoInsuficiente { CuentaBancaria cuenta = new CuentaBancaria (); cuenta.saldo = 1000; cuenta.retirar (2000); }

9 Características de excepciones Forman parte de la interfaz de un objeto. Si un método deja ocurrir una excepción (no la captura) se debe declarar en su cabecera con throws. Un método no puede declarar más excepciones que las que declara su clase padre. Si un método sobreescrito emite una excepción no declarada en el padre, es obligatorio procesarla dentro del método sobreescrito.

10 Excepciones predefinidas Java genera los errores de ejecución en forma de excepciones. –Punteros a null. –Rangos de un array. –Aritmética. Generalmente no se capturan, porque son fácilmente evitables con comprobaciones en el código.

11 Algunas excepciones básicas RuntimeException IndexOutOfBoundsException ArithmeticException EmptyStackException NullPointerException ClassCastException Exception AWTException IOException Excepciones definidas por el programador Excepciones definidas por el programador EOFException FileNotFoundException

12 Ventajas de las excepciones Separación del tratamiento de errores del resto del código del programa. –Evitar manejos de códigos de error. –Evitar alteración del flujo de un programa. Propagación de errores a lo largo de la pila de llamadas a métodos. –Evitar retornos continuos en caso de error. –Evitar la necesidad de argumentos adicionales. Agrupamiento y definición de tipos de errores como clases. –Jerarquías de excepciones. –Tratar errores a diferentes niveles de especifidad.

13 Ejemplo: Tratamiento de errores (I) Sin tratamiento de errores: readFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; }

14 Ejemplo: Tratamiento de errores (II) Tratamiento sin excepciones: errorCodeType readFile { initialize errorCode = 0; open the file; if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) errorCode = -1; } else errorCode = -2; } else errorCode = -3; close the file; if (theFileDidntClose && errorCode == 0) errorCode = -4; else errorCode = errorCode & -4; } else errorCode = -5; return errorCode; }

15 Tratamiento con excepciones: Ejemplo: Tratamiento de errores (y III) readFile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; } catch (fileOpenFailed) { doSomething; } catch (sizeDeterminationFailed) { doSomething; } catch (memoryAllocationFailed) { doSomething; } catch (readFailed) { doSomething; } catch (fileCloseFailed) { doSomething; } }

16 Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005


Descargar ppt "Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005."

Presentaciones similares


Anuncios Google