La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y Programación Orientada a Objetos

Presentaciones similares


Presentación del tema: "Diseño y Programación Orientada a Objetos"— Transcripción de la presentación:

1 Diseño y Programación Orientada a Objetos
Conferencia # 12: Excepciones TEMA # 4: Nociones de tratamiento de excepciones y errores Facultad Ing. Informática ISPJAE

2 Contenido Excepción Filosofía del tratamiento de errores a través de excepciones Discriminación de excepciones Declaración de tipos de excepciones Declaraciones throw y throws Excepciones y constructores

3 package a public class A{ public void m() { … } … } package b
package c import a.A public class B { public void k(){ A a= new A(); a.m(); … } …} import a.A public class C { public void g(){ A a= new A(); a.m(); … } …}

4 Solución  Excepciones
Ejemplos String public char charAt(int index) public boolean contains(CharSequence  s) Solución  Excepciones

5 Excepción Evento que ocurre durante la ejecución e interrumpe el flujo normal del programa. Error que interrumpe el programa. Objeto de una clase específica. Incluye información del error ocurrido y un comportamiento propio de la categoría. Java tiene varias categorías de excepcio-nes predefinidas. El programador puede definir nuevas categorías de excepciones.

6 Tratamiento de errores con excepciones
Si un método encuentra un problema que no puede resolver “lanzará” una excepción. Quien lo llamó, directa o indirectamente, maneja el problema.

7 Tratamiento de errores con excepciones
a) Servidor detecta error, lanza una excepción. Cliente la atrapa y maneja error. Solicitud Servidor Detecta error y lanza una excepción Cliente Atrapa excepción y maneja error Excepción (objeto)

8 Tratamiento de errores con excepciones
b) Servidor indirecto detecta error y lanza excepción. Uno o varios clientes atrapan excepción y manejan error según puedan.

9 Detecta error y lanza excep. Cliente Atrapa excep. y maneja error
Servidor Detecta error y lanza excep. Cliente Atrapa excep. y maneja error Solicitud Solicitud Excepción (objeto) Excepción (objeto) Cliente/Servidor Atrapa excep. y maneja error. Atrapa excep., maneja error y vuelve a lanzar. No atrapa excep. y la deja continuar

10 Excepciones estándar de Java
Throwable Error Exception RunTimeException

11 Tratamiento de Excepciones en Java Mecanismo similar al resto de los lenguajes OO

12 try { body } catch (ExcepClass1 excepObj) { excepHandlerBody1 catch (ExcepClass2 excepObj) { excepHandlerBody2 finally { excepHandlerBodyFinally

13 Ejemplo Course Group Student public class Student{
* * Course Group Student public class Student{ private String name; private int mark; private char sex; ... }

14 public class Group { private ArrayList<Student> students; public float averageSex(char sex){ int countSex= 0; float sum= 0; for(int i= 0; i < students.size(); i++) if(students.get(i).getSex() == sex){ countSex ++; sum += students.get(i).getMark(); } return sum/countSex; ...}

15 public class Course{ private ArrayList<Group> groups; public float averageSexGroup(int index, char sex){ try{ return groups.get(index).averageSex(sex); } catch(IndexOutOfBoundsException){ System.out.println("Error: El grupo " index +" no existe"); } catch(Exception){ System.out.println("No existen estudiantes del sexo " + sex); } } }

16 Java especifica las excepcio-nes que lanzan las clases
charAt public char charAt(int index) Returns the char value at the specified Throws: IndexOutOfBoundsException - if the index argument is negative or not less than the length of this string.

17 Declaración throw Para lanzar/relanzar explícitamente una excepción.
Invoca al constructor de la clase de excepción de la cual desea construir una instancia.

18 Declaración throw if (index >= 0 || index < size())
Ejemplo ArrayList<E>, para lanzar: public E get(int index){ if (index >= 0 || index < size()) return items[index]; else throw new IndexOutOfBoundsException(); }

19 Declaración throw String s= "Hola"; char c; try { c= s.charAt(10); }
Para relanzar: String s= "Hola"; char c; try { c= s.charAt(10); } catch (IndexOutOfBoundsException e){ //hacer algo throw e; }

20 Declaración throws Se utiliza en la declaración de métodos que lanzan excepciones public class A { public int m() throws Exception{ ... throw new …; }

21 Declaración throws Ejemplo en ArrayList
public E get(int index) throws IndexOutOfBoundsException { if (index >= 0 || index < size()) return items[index]; else throw new IndexOutOfBoundsException(); }

22 Constructores y Excepciones
Un objeto no se considera construido has-ta que no se ha terminado de ejecutar su constructor. Un constructor puede lanzar una excep-ción. Es posible transmitir fuera del constructor información de fracasado. Esto puede ser peligroso en lenguajes que requieren la implementación de destructores y liberación explícita de memoria.

23 Jerarquías de excepciones
Para crear una nueva clase de excepción se debe heredar de alguna de las clases de excepciones ya existentes. Como regla a seguir, el nombre de la excepción debe indicar el problema que ocurre.

24 Constructores de la Clase Exception
public Exception() public Exception(String message) public Exception(String message, Throwable cause) public Exception(Throwable cause)

25 Jerarquías de excepciones
Ejemplo: Modificar Rectangle (CP1), para garantizar que los métodos Rectangle.setSideA(float sideA() y Rectangle.setSideB(float sideB) retornen una excepción si el nuevo valor del lado es negativo.

26 Jerarquías de excepciones
public class NegativeSideException extends Exception { //redefinir los constructores necesarios public ExceptionNegativeSide() { super(); } public ExceptionNegativeSide(String arg0) { super(arg0);

27 Solución public class Rectangle { …
public void setSideA(int sideA) throws NegativeSideException { if (sideA > 0) this.sideA= sideA; else throw new NegativeSideException(“Lado A no puede ser negativo”) } … }

28 “El lado B no puede ser negativo”
Solución public class Main { public static void main(String[] args) { Rectangle r= new Rectangle(10,10); try { r.sideA(2); r.sideB(-4); } catch (NegativeSideException e) { System.out.print(e.getMessage()); Mostrará: “El lado B no puede ser negativo”

29 Conclusiones Excepciones son una forma novedo-sa de manejar errores. Permite: Aislar el código de la lógica del negocio del código de tratamiento de errores. Este último queda atrapado en los bloques catch. Aumentar la claridad de todo el código.

30 Conclusiones Reducir tamaño final del código. Cuando el tratamiento de errores se hace dentro de los mismos algoritmos de solución, el código final crece aproximadamente en un 400%, mientras que con el manejo de excepciones se incrementa solo en un 200%.


Descargar ppt "Diseño y Programación Orientada a Objetos"

Presentaciones similares


Anuncios Google