Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.

Slides:



Advertisements
Presentaciones similares
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Advertisements

Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Manejo de Excepciones
Instrucciones y excepciones
Manejo de errores y excepciones
Programación en Java Instructor:.
MANEJO DE EXCEPCIONES EN C++
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Siguiente Excepciones Introducción. AnteriorSiguiente Definición Una excepción es un evento que ocurre durante la ejecución de un programa que desestabiliza.
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD LATINA (UNILA)
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Control de excepciones
Manejo de excepciones en Java
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
Manejo de Excepciones Agustín J. González ELO329.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Tema 11: Excepciones Antonio J. Sierra.
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Lenguaje Java Fundamentos del lenguajes de programación
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 8 Excepciones y afirmaciones o invariantes.
Programación Orientada a Objetos Temario Excepciones – Definición. – Funcionalidad – Tipos de Excepciones – API de las Excepciones – Captura de Excepciones.
Computación II Unidad X Manejo de Excepciones. Presentación de la Unidad Objetivos: –Saber manejar situaciones inesperadas dentro de un programa –Comprender.
USO DE EXCEPCIONES EN JAVA LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CUATRO CONTROL DE FLUJOS, EXCEPCIONES Y ASERSIONES.
Programación orientada a objetos Capítulo 12 Manejo de errores.
Módulo 8: Manejo de Errores y Excepciones
Manejo de excepciones en Java ELO329: Diseño y Programación Orientados a Objetos Agustín J. González.
ING.CIP.IVAN PETRLIK AZABACHE. SEMANA 4 MANEJO DE EXCEPCIONES Y ERRORES.
Unidad III Manejo de Excepciones en Java y C++
Excepciones Unidad 5.
Sintaxis Completa los siguientes esquemas: Esquema de excepción Excepción Definición Tipos Implementación En el lenguaje Java, excepción es un tipo de.
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
Programación Interactiva Manejo de Excepciones Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
Java.
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
Manejo de errores: Excepciones en Java
Programación orientada a objetos Capítulo 12 Manejo de errores.
Detalles Generales sobre Java
Tratamiento de excepciones
Manejo de errores: Excepciones en Java ELO329: Diseño y Programación Orientados a Objetos.
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
MANEJO DE EXCEPCIONES. 21/11/2005 E.T.S de Ingenieros de Telecomunicacion.2 Índice ¿Qué es una excepción? Tipos de situaciones. Manejo de excepciones.
¿Qué son? – tipos – manejo - ejemplos
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
Manejo Excepciones Profesor Elian Rojas Berroca 11/02/2015.
Desarrollador Profesional de Juegos Programación III Unidad I El manejador universal.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
SCITMina | by Microsoft Bienvenidos Eduardo Daniel Tenorio Mayo Microsoft Student Partner Taller de Programación Orientada a Objetos Con C# Edgar Edel.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Manejo de Excepciones made by cristhian.. !!.  Errores que se pueden producir durante la ejecucion de una aplicacion y que podemos controlar o manejar.
Excepciones Diseño y manejo de excepciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 5 Versión
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Diseño y Programación Orientada a Objetos
Programación Orientada a Objetos
Manejo de excepciones en Java
Programación Orientada a Objetos
Transcripción de la presentación:

Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación

2 Temario Introducción Ventajas de excepciones Manejo de excepciones Propagación de excepciones La jerarquía de excepciones Excepciones "Checked" y "Unchecked“ Creación de clases de excepciones Lanzamiento de excepciones

Problema Se requiere calcular el % de votos de los candidatos en una votación cuando la urna se abre al final del día Los candidatos están identificados por un número del 1 al n Cada vez que se abre un voto se ingresa el número del candidato votado Cuando se terminan los votos se ingresa un 0 3

4 import java.util.*; public class Program6 { public static void main(String args[ ]) { int nc = U.readInt("Cuantos candidatos ? "); int count[] = new int[nc], nv = 0; for (int i=0; i < cand; i++) count[i] = 0; while (true) { int c = U.nextInt(“numero candidato ? “); if (c == 0) break; nv++; count[c - 1]++; } for (int i=0; i < nc; i++) U.println(“Candidato "+(i+1)+" obtuvo "+(100*count[i]/nv)+"%"); } ¿ Qué pasa las ingresar algo que no es un número o un número de candidato erróneo ? Solución 1

5 Excepciones Java utiliza excepciones para proveer capacidades de manejo de errores Una excepción es un evento que ocurre durante la ejecución de un programa, y que interrumpe el flujo normal de instrucciones

6 import java.util.*; public class Program6 { public static void main(String args[ ]) { int nc = U.readInt("Cuantos candidatos ? "); int count[] = new int[nc], nv = 0; for (int i=0; i < cand; i++) count[i] = 0; while (true) { try { int c = U.nextInt(“numero candidato ? “); if (c == 0) break; nv++; count[c - 1]++; U.println(“OK”); } catch (Exception e) { U.print(“Error, dato se ignora “); } for (int i=0; i < nc; i++) U.println(“Candidato "+(i+1)+" obtuvo "+(100*count[i]/nv)+"%"); } Solución 2 No importa el tipo de error

7 import java.util.*; public class Program6 { public static void main(String args[ ]) { int nc = U.readInt("Cuantos candidatos ? "); int count[] = new int[nc], nv = 0; for (int i=0; i < cand; i++) count[i] = 0; while (true) { try { int c = U.nextInt(“numero candidato ? “); if (c == 0) break; nv++; count[c - 1]++; U.println(“OK”); } catch (InputMismatchException e) { U.print(“Error, dato se ignora “); } catch (ArrayIndexOutOfBoundException e) { U.print(“Error, dato se ignora “); } for (int i=0; i < nc; i++) U.println(“Candidato "+(i+1)+" obtuvo "+(100*count[i]/nv)+"%"); } Solución 3 Si importa el tipo de error

8 Manejo de Excepciones Sintaxis try { // código que puede generar // excepciones } catch(ExceptionType1 e) { // acciones para manejar la excepción } catch(ExceptionType2 e) { // acciones para manejar la excepción } finally { // código que se ejecuta siempre, // haya o no una excepción } catchfinally catch y finally son bloques opcionales (pero uno de los dos debe estar presente acompañando al bloque try)

9 Ventajas de Excepciones En comparación con las técnicas tradicionales de manejo de errores, el manejo de excepciones provee las siguientes ventajas: Separación entre el "código normal" y el código de manejo de errores Propagación de errores hacia "arriba" en el stack de llamadas (y detención automática del programa si una situación de error no es manejada) Facilidades para la agrupación de tipos de errores Facilidades para entregar información del error producido, sin que se produzca interferencia con el retorno normal

10 Ventaja 1: Limpieza del Código Supongamos que queremos leer un archivo a memoria, el seudocódigo podría ser leerArchivo { abrir el archivo; determinar su tamaño; crear la memoria necesaria; leer el archivo a memoria; cerrar el archivo; }

11 Agregando manejo de errores int leerArchivo { codError = 0; abrir el archivo; if (archivo abierto) { determinar su tamaño; if (tamaño determinado) { crear la memoria necesaria; if (memoria suficiente) { leer el archivo a memoria; if (error de lectura) { codError = -1; } } else { codError = -2; }... } else { codError = -3; } cerrar el archivo; if (error al cerrar archivo) { codError = -4; } } else { codError = -5; } return codError; } Ventaja 1: Limpieza del Código

12 Usando excepciones leerArchivo { try { abrir el archivo; determinar su tamaño; crear la memoria necesaria; leer el archivo a memoria; } catch (error al abrir archivo) {... } catch (error al obtener tamaño archivo) {... } catch (error al crear memoria) {... } catch (error al leer archivo) {... } catch (error al cerrar archivo) {... } finally { cerrar el archivo; } Ventaja 1: Limpieza del Código

13 Ventaja 2: Propagación Errores Supongamos que el método leerArchivo es el cuarto de una serie de invocaciones anidadas metodo1() { metodo2();... } metodo2() { metodo3();... } metodo3() { leerArchivo();... }

14 Ventaja 2: Propagación Errores Supongamos que el primer método es el interesado en manejar un posible error del método leerArchivo void metodo1() { if (metodo2() != 0) { manejar el error; } else {... } int metodo3() { int err = leerArchivo(); if (err == 0) {... } return err; } int metodo2() { int err = metodo3(); if (err == 0) {... } return err; }

15 Ventaja 2: Propagación Errores Usando excepciones, la propagación de errores es automática void metodo1() { try { metodo2();... } catch (Exception e) { manejar el error; } void metodo2() { metodo3();... } void metodo3() { leerArchivo();... }

16 Las excepciones pueden agruparse jerárquicamente utilizando herencia Si se desea atrapar excepciones de tipo InvalidIndexException: catch (InvalidIndexException e) {... } Si se desea atrapar todas las excepciones de arreglos, independiente de su tipo específico: catch (ArrayException e) {... } Ventaja 3: Agrupación Errores

17 Connection conn = null; try { // conexión a base de datos conn = DriverManager.getConnection(…); // uso de conn //... } catch(SQLException e) { // manejo de error System.out.println(…); } finally { // liberación de recursos if (conn != null) { conn.close(); } Manejo de Excepciones

18 Propagación de Excepciones catch Si un método no atrapa (catch) una excepción, el método aborta, propagando la excepción throws Un método debe declarar el conjunto de excepciones "checked" que lanza o propaga, con la sentencia throws void miMetodo() throws ExceptionType { // código que puede generar excepciones }

19 void executeQuery() throws SQLException { Connection conn = null; try { // conexión a base de datos conn = DriverManager.getConnection(…); // uso de conn //... } finally { // liberación de recursos if (conn != null) { conn.close(); } Propagando Excepciones

20 Jerarquía de Excepciones

21 Dos Tipos de Excepciones Excepciones "checked" throw throws Si un método genera (throw) o propaga una excepción checked, debe declararlo (throws) en su firma Excepciones "unchecked" throws throw No es necesario que un método declare (throws) las excepciones unchecked que genera (throw) o propaga (aunque puede hacerlo)

22 Excepciones "Checked" Throwable Error RuntimeException Clases derivadas de Throwable, exceptuando aquellas derivadas de Error y RuntimeException El compilador exige que un método declare el conjunto de excepciones "checked" que lanza o propaga void f() throws IOException, SQLException {... } Ejemplos FileNotFoundException FileNotFoundException SQLException SQLException

23 Excepciones "Unchecked" ErrorRuntimeException Clases Error, RuntimeException, y derivadas El compilador no exige que un método declare las excepciones unchecked que genera o propaga, de modo de no complicar la programación Ejemplos OutOfMemoryException OutOfMemoryException NullPointerException NullPointerException ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException

24 Creación de Excepciones Parte del diseño de un paquete es la definición de las excepciones que su uso puede generar Throwable Para crear un nuevo tipo de excepciones, debe crearse una clase derivada de Throwable Exception Para definir excepciones checked, lo aconsejable es derivarlas de la clase Exception public class UsuarioRequeridoException extends Exception { public UsuarioRequeridoException() { super("Debe establecerse el usuario!"); } RuntimeException Para definir excepciones unchecked, lo aconsejable es derivarlas de la clase RuntimeException

25 Lanzamiento de Excepciones throw Para lanzar una excepción se utiliza la sentencia throw void generaReporte() throws UsuarioRequeridoException {... if (usuario == null) { throw new UsuarioRequeridoException(); }... }

26 Resumen Java permite manejar los errores de una manera cómoda y segura, utilizando excepciones Throwable Las excepciones son clases derivadas de la clase Throwable try-catch-finally El bloque try-catch-finally permite programar separadamente el código normal y el manejo de errores catch Las excepciones no atrapadas en un bloque catch son automáticamente propagadas al método "anterior" en el stack de llamadas

27 Resumen Si una excepción no es atrapada en un programa, éste aborta throws Error RuntimeException Un método debe declarar en la cláusula throws de su firma el conjunto de excepciones "checked" que lanza o propaga, lo que no es necesario para las excepciones "unchecked" (derivadas de las clases Error y RuntimeException) Exception RuntimeException Se recomienda que las excepciones propias se deriven de las clases Exception (checked) o RuntimeException (unchecked) throw Para lanzar una excepción se utiliza la sentencia throw