La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.

Presentaciones similares


Presentación del tema: "Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones."— Transcripción de la presentación:

1

2

3 Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones comunes Mis excepciones Manejo de Excepciones

4 Mecanismos que permiten detectar errores fácilmente sin escribir código especial para testear valores de retorno Mantienen el código de manejo del error separado de el que genera el error

5 Las excepciones manejan situaciones inesperadas: Archivo no encontrado, falla en la red, argumento ilegal,etc Las assertions documentan y testean los supuestos del programa Esto nunca puede ser negativo Los testeos de assertions pueden eliminarse completamente del código, así no hace más lenta la ejecución

6 El término exception significa condición excepcional y se da cuando se altera el flujo normal de un programa. Cuando ocurre un evento excepcional en Java, se dice que se lanza (throw) una excepción. Al código que es responsable de hacer algo al respecto se le llama exception handler y es quien atrapa (catch) la excepción que se lanzó.

7 Por ejemplo, cuando se invoca un método que abre un archivo y este no puede ser abierto, la ejecución de ese método se termina y el código que maneja ese error se ejecuta. Para esto se precisa una forma de decirle a la JVM que código ejecutar cuando cierta excepción es lanzada.

8 El try se utiliza para definir un bloque de código que puede lanzar una excepción Luego se define una o más cláusulas catch que atrapen ciertas excepciones y definen el código manejador de la misma.

9 Si se tiene uno o más bloques catch, estos deben aparecer inmediatamente después de un bloque try. Todos los bloques catch deben aparecer uno a continuación del otro

10 Los bloques try y catch no resuelven el problema de cómo limpiar los recursos luego de un error Para resolver este problema, Java provee el bloque finally Este bloque siempre se ejecuta luego del try, se haya lanzado una excepción o no

11

12 Es legal utilizar un bloque try sin un catch o finally Un bloque try sin ambas da error de compilación Los bloques catch deben aparecer siguiendo al bloque try El bloque finally debe aparecer luego de los catch Es legal omitir los catch o el finally pero no ambos

13 Existen dos grandes categorías de excepciones: Checked Unchecked

14 La clase Exception es la clase base que representa las excepciones checked. La clase RuntimeException es la clase base que representa las excepciones uncheked. La clase Error es la clase base que representa los errors.

15

16 ArithmeticException NullPointerException NegativeArraySizeException ArrayIndexOutOfBoundsException SecurityException

17 ¿Por que los catch no son requeridos? ¿Que pasa cuando se lanza una excepción de un bloque try que no tiene catch asociado? Si la excepción no es manejada en el bloque try-catch actual, es lanzada al método que lo invocó. Si la excepción llega al método main y no es manejada, el programa termina de forma abrupta

18 A continuación vemos un ejemplo de como utilizar un bloque con un try sin hacer uso del catch. En este ejemplo, se lee la primer línea de un archivo. Se utiliza una instancia de la clase BufferedReader para leer los datos del archivo. Como vemos, la variable utilizada es cerrada en el bloque finally.

19 Cuando se lanza una excepción, Java intentará encontrar la cláusula catch para el tipo correspondiente de excepción Si no encuentra una, seguirá buscando por la jerarquía de herencia hacia arriba Si no encuentra nada que matchee entonces la excepción se propaga por el stack de llamadas Importante: los handlers para las excepciones más específicas deben colocarse entes que los más generales

20 Cuando se detecta que ha ocurrido un error podemos crear una excepción y lanzarla if ( n < 0) { throw new Exception(numero negativo); } Para declarar que el método lanza una excepción hay que utilizar la palabra throws

21

22

23 Cuando se sobrescribe un método que lanza alguna excepción, éste puede lanzar las mismas excepciones o alguna subclase de las mismas. No puede lanzar más de lo que lanza el método padre.

24 A continuación vemos un ejemplo en el cual el método toString para la clase Empleado, fue sobre escrito.

25

26 Para lanzar una excepción definida por el usuario, utilice la siguiente sintaxis: throw new NombreClaseException(); Simpre instancie la exception en la misma línea donde se lanza, porque la excepción toma el número de línea dónde fue creada.

27 En el ejemplo anterior, definimos un método llamado divide, el cual recibe dos números. Si el segundo número es cero, entonces se lanza una excepción de tipo MiException. Como vemos, el método debe tener la declaración de dicha excepción.

28

29 Existen dos sintaxis permitidas para la sentencia assert assert ; assert > : > ; Si la > retorna false, entonces un AssertionError es lanzado. El segundo argumento es convertido a String y usado como texto descriptivo en el mensaje de AssertionError.

30 Para la documentación y verificación de supuestos asumidos en la lógica de un método: Invariantes internas Control de flujo invariante PostCondiciones e invariantes de clase No es recomendado para el control de precondiciones en métodos públicos

31 if ( x > 0 ){ //…….. } else{ //…….. } if ( x > 0 ){ //…….. } else{ assert(x>=0); //…….. }

32 public Object pop(){ int size = this.getElementCount(); if(size == 0){ throw new RuntimeException(Error..) } //hace el trabajo de pop //test postcondicion assert (this.getElementCount() == size-1 ) return value; }

33 Si las assertion están deshabilitadas, el código ejecuta tan rápido como si no estuvieran. Assertion están deshabilitadas por defecto Para habilitarlas java -enableassertions java -ea Para dehabilitarlas java -disableassertions java -da

34 ComandoQue significa? java -ea Java –enableassertions Habilita assertions java -da java –disableassertions Deshabilita assertions java –ea:com.foo.BarHabilita asserts en la clase com.foo.Bar java –ea:com.fooHabilita asserts en paquete com.foo.Bar y sus subpaquetes java –ea –dsaHabilita asserts en general, deshabilita asserts en clases system java –ea –da:com.fooHabilita asserts en general, deshabilita asserts en paquete com.foo y sus subpaquetes.

35 Exceptions y Assertions: diferencias Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones comunes Mis excepciones Manejo de Excepciones Ejemplos

36 Thinking in Java Bruce Eckel The Java Tutorial xceptions/ xceptions/ Introduction to Java Exception Handling handling/index.html


Descargar ppt "Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones."

Presentaciones similares


Anuncios Google