Uso de excepciones en Java



Documentos relacionados
Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

Introducción - por qué usarlas?(1)

Programación Orientada a Objetos. Java: Excepciones

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

Programación Orientada a Objetos. Java: Excepciones

Tema 14: Excepciones

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

TEMA 5. EXCEPCIONES EN JAVA DEFINICIÓN DE EXCEPCIONES EN PROGRAMACIÓN TIPOS DE EXCEPCIONES / ERRORES Y CÓMO TRATARLOS

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Examen de Prácticas de Programación Ingeniería Informática

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Manejo de Excepciones

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Repaso de las características más importantes de la programación Java y su adaptación a Android

Java: control de excepciones

Programación Orientada a Objetos con Java

Patrones para persistencia (I) Ingeniería del Software II

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Elementos léxicos del lenguaje de programación Java

Clases abstractas e interfaces

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Técnicas Avanzadas de Testing Automatizado

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

8. Sentencia return y métodos

Programación orientada a objetos

Benemérita Universidad Autónoma del Estado de Puebla

Un breve resumen del lenguaje Java

Pruebas de unidad con JUnit

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Tema 2. El lenguaje de programación Java (Parte 1)

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Relaciones entre clases: Diagramas de clases UML

Concurrencia en Java

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Modulo 1 El lenguaje Java

Introducción a la programación orientada a objetos

11. Algunas clases estándar de Java (II)

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

- Bases de Datos - - Diseño Físico - Luis D. García

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

1. Visión general de RMI

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Parsear HTML con htmlparser para Android Guillem Pérez

Programación en Java. Programación en OO

Preliminares. Tipos de variables y Expresiones

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Modelo de Objetos Distribuidos

CONCEPTOS BASICOS DEL LENGUAJE JAVA

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

Java Inicial (20 horas)

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

TEMA 8. Excepciones en Java. Curso de Java. Manejo de Excepciones

1 HILOS (THREADS) EN JAVA

Ingeniería del Software Arquitectura Física en 3 niveles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Primer Parcial Septiembre 5 de 2009

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Manual del Protocolo XML-RPC de Mensajería Negocios

Parte I: Programación en un lenguaje orientado a objetos

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

SOLUCION EXAMEN junio 2006

Excepciones. Excepciones

Constructores y Destructores

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS COORDINACION DE COMPUTACIÓN PROYECTO DE CÁTEDRA. MATERIA: Introducción a la Programación

GENERACIÓN DE TRANSFERENCIAS

Benemérita Universidad Autónoma del Estado de Puebla

Concurrencia. Primitivas IPC con bloqueo

Caso práctico Alquiler de películas en un vídeo-club

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Tema 3. Test Driven Development

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Clases y Objetos. Informática II Ingeniería Electrónica

Práctica sobre compartición de instancias remotas.

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Introducción al lenguaje de especificación JML

Manejo de Errores Ejercicio Facturas

Práctica 5: Servidor web concurrente en Java

Uso de Visual C++ Pre-Practica No. 3

ADMIRAL MARKETS AS. Normas de Ejecución Óptima. medida en que ha actuado de acuerdo con las correspondientes instrucciones del cliente.

Actividades de Divulgación del Centro Atómico Bariloche. Qué hay detrás de un programa de computadora? Daniela Arnica Pablo E. Argañaras.

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

2. Estructura de un programa en Java

Práctica: Creación de un programa C# sencillo

15. Parámetros o argumentos

GENERACIÓN DE CÓDIGO

2. Almacén. 2.1 Paso a Histórico a Fecha. 2.2 Mantenimiento de Productos Ocultar datos

ANÁLISIS Y GESTIÓN DEL DESARROLLO DE SOFTWARE TEMA 5: LA PLANIFICACIÓN DEL PRODUCTO

Ficheros de acceso aleatorio

Gastos Reales Web Manual de Usuario

Universidad ORT - Arquitectura de Software. Requisitos

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Ejercicios - Persistencia en Android: ficheros y SQLite

3.9 Patrón Distributed callback

Transcripción:

Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que estime oportunas. Tras capturar la excepción, el control no vuelve al método en el que se produjo la excepción, sino que la ejecución del programa continúa en el punto donde se haya capturado la excepción. Consecuencia: Nunca más tendremos que preocuparnos de diseñar códigos de error. Jerarquía de clases para el manejo de excepciones en Java #$!" Excepciones - 6 - Fernando Berzal

Throwable Clase base que representa todo lo que se puede lanzar en Java Contiene una instantánea del estado de la pila en el momento en el que se creó el objeto ( stack trace o call chain"). Almacena un mensaje (variable de instancia de tipo String) que podemos utilizar para detallar qué error se produjo. Puede tener una causa, también de tipo Throwable, que permite representar el error que causó este error. Error Subclase de Throwable que indica problemas graves que una aplicación no debería intentar solucionar (documentación de Java). Ejemplos: Memoria agotada, error interno de la JVM Exception Exception y sus subclases indican situaciones que una aplicación debería tratar de forma razonable. Los dos tipos principales de excepciones son: RuntimeException (errores del programador, como una división por cero o el acceso fuera de los límites de un array) IOException (errores que no puede evitar el programador, generalmente relacionados con la entrada/salida del programa). Excepciones - 7 - Fernando Berzal

Captura de excepciones: Bloques try catch Se utilizan en Java para capturar las excepciones que se hayan podido producir en el bloque de código delimitado por try y catch. En cuanto se produce la excepción, la ejecución del bloque try termina. La cláusula catch recibe como argumento un objeto Throwable. // Bloque 1 catch (Exception error) Sin excepciones: 1 2 4 Con una excepción en el bloque 2: 1 2* 3 4 Con una excepción en el bloque 1: 1* // Bloque 1 catch (ArithmeticException ae) catch (NullPointerException ne) // Bloque 5 Sin excepciones: 1 2 5 Excepción de tipo aritmético: 1 2* 3 5 Acceso a un objeto nulo (null): 1 2* 4 5 Excepción de otro tipo diferente: 1 2* Excepciones - 8 - Fernando Berzal

// Bloque1 catch (ArithmeticException ae) catch (Exception error) // Bloque 5 Sin excepciones: 1 2 5 Excepción de tipo aritmético: 1 2* 3 5 Excepción de otro tipo diferente: 1 2* 4 5 Ojo! Las cláusulas check se comprueban en orden // Bloque1 catch (Exception error) catch (ArithmeticException ae) // Bloque 5 Sin excepciones: 1 2 5 Excepción de tipo aritmético: 1 2* 3 5 Excepción de otro tipo diferente: 1 2* 3 5 El bloque 4 nunca se llegará a ejecutar! Excepciones - 9 - Fernando Berzal

La cláusula finally En ocasiones, nos interesa ejecutar un fragmento de código independientemente de si se produce o no una excepción (por ejemplo, cerrar un fichero que estemos manipulando). // Bloque1 catch (ArithmeticException ae) finally // Bloque 5 Sin excepciones: 1 2 4 5 Excepción de tipo aritmético: 1 2* 3 4 5 Excepción de otro tipo diferente: 1 2* 4 Si el cuerpo del bloque try llega a comenzar su ejecución, el bloque finally siempre se ejecutará Detrás del bloque try si no se producen excepciones Después de un bloque catch si éste captura la excepción. Justo después de que se produzca la excepción si ninguna cláusula catch captura la excepción y antes de que la excepción se propague hacia arriba. Excepciones - 10 - Fernando Berzal

Lanzamiento de excepciones La sentencia throw Se utiliza en Java para lanzar objetos de tipo Throwable throw new Exception( Mensaje de error ); Cuando se lanza una excepción: Se sale inmediatamente del bloque de código actual Si el bloque tiene asociada una cláusula catch adecuada para el tipo de la excepción generada, se ejecuta el cuerpo de la cláusula catch. Si no, se sale inmediatamente del bloque (o método) dentro del cual está el bloque en el que se produjo la excepción y se busca una cláusula catch apropiada. El proceso continúa hasta llegar al método main de la aplicación. Si ahí tampoco existe una cláusula catch adecuada, la máquina virtual Java finaliza su ejecución con un mensaje de error. Propagación de excepciones (throws) Si en el cuerpo de un método se lanza una excepción (de un tipo derivado de la clase Exception), en la cabecera del método hay que añadir una cláusula throws que incluye una lista de los tipos de excepciones que se pueden producir al invocar el método. Ejemplo public String leerfichero (String nombrefichero) throws IOException... Las excepciones de tipo RuntimeException (que son muy comunes) no es necesario declararlas en la cláusula throws. Excepciones - 11 - Fernando Berzal

Al implementar un método, hay que decidir si las excepciones se propagarán hacia arriba (throws) o se capturar en el propio método (catch) 1. Un método que propaga una excepción: public void f() throws IOException // Fragmento de código que puede // lanzar una excepción de tipo IOException NOTA: Un método puede lanzar una excepción porque cree explícitamente un objeto Throwable y lo lance con throw, o bien porque llame a un método que genere la excepción y no la capture. 2. Un método equivalente que no propaga la excepción: public void f() // Fragmento de código libre de excepciones // Fragmento de código que puede // lanzar una excepción de tipo IOException // (p.ej. Acceso a un fichero) catch (IOException error) // Tratamiento de la excepción finally // Liberar recursos (siempre se hace) Excepciones - 12 - Fernando Berzal

Ejemplo clásico public void transferir (String IDorigen, String IDdestino, int cantidad) Cuenta origen; Cuenta destino; // Comenzar transacción database.starttransaction(); origen = database.find(idorigen); if (origen == null) throw new Exception("No existe + IDorigen); origen.setbalance (origen.getbalance() cantidad); database.store(origen); destino = database.find(iddestino); if (destino == null) throw new Exception("No existe + IDdestino); destino.setbalance(destino.getbalance()+cantidad); database.store(destino) // Confirmar la transacción database.commit(); catch (Exception error) // Cancelar la transacción database.rollback(); Excepciones - 13 - Fernando Berzal

Creación de nuevos tipos de excepciones Un nuevo tipo de excepción puede crearse fácilmente: basta con definir una subclase de un tipo de excepción ya existente. public DivideByZeroException extends ArithmeticException public DivideByZeroException(String Message) super(message); Una excepción de este tipo puede entonces lanzarse como cualquier otra excepción: public double dividir(int num, int den) throws DivideByZeroException if (den==0) throw new DivideByZeroException( Error! ); return ((double) num/(double)den);` NOTA: Las aplicaciones suelen definir sus propias subclases de la clase Exception para representar situaciones excepcionales específicas de cada aplicación. Excepciones - 14 - Fernando Berzal