1 Manejo de Excepciones y otros Agustín J. González ELO-329.

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

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.
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.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Manejo de Excepciones
Uso de variables de tipo referencia
Lenguaje de programación Java
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.
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.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Manejo de Excepciones Agustín J. González ELO329.
1 Persistencia en Java Agustín J. González ELO-329.
Tema 11: Excepciones Antonio J. Sierra.
Lenguaje Java Fundamentos del lenguajes de programación
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.
Manejo de Punteros y objetos en memoria dinámica en C++
Manejo de excepciones en Java ELO329: Diseño y Programación Orientados a Objetos Agustín J. González.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
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.
ELO3291 Manejo de Excepciones Lectura sugerida de texto en linea: Eckel, Bruce. Thinking About C++, 2nd Edition, Prentice-Hall, Gratis en
Programación avanzada en Java Miguel Ángel Corella 26 de Septiembre de 2005.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Manejo de errores: Excepciones en Java
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación orientada a objetos Capítulo 12 Manejo de errores.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Tratamiento de excepciones
Manejo de errores: Excepciones en Java ELO329: Diseño y Programación Orientados a Objetos.
ELO3291 Manejo de Excepciones Agustín J. González ELO329.
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.
1 Definición y Conversión de datos Agustín J. González ELO-329.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Clases “ Es una Abstracción de un elemento del mundo real ”
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
:: 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,
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Excepciones Diseño y manejo de excepciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 5 Versión
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de excepciones en Java
Manejo de errores: Excepciones en Java
Manejo de Excepciones y otros
Transcripción de la presentación:

1 Manejo de Excepciones y otros Agustín J. González ELO-329

2 Aspectos varios en una comparación con C++ Sobrecarga de Operadores –Esta característica no es soportada por Java. Los diseñadores del lenguajes optaron por esta opción para hacer el lenguaje y su compilador mas simple. Administración de Memoria –En comparación a C++, Java es mucho mas simple. Los programadores no necesitan preocuparse por ésta. –Todos los objetos son almacenados en el heap y creados con la sentencia new. El programador no necesita preocuparse por liberar esta memoria. –La recolección de “basura” (garbage collection) se encarga de recuperar la memoria no referenciada. –Este proceso es en general lo “suficientemente” rápido para el el usuario no lo note.

3 Aspectos varios en una comparación con C++ (cont) Parametrización de Clases –En C++ estudiamos las plantillas (templates) las cuales son un mecanismo de programación genérica. –En Java no existe tal mecanismo. El mecanismo usado por Java fue definir la case Object como la clase base para cualquier clase. –Este mecanismo posee como desventaja la necesidad de hacer un cast cuando retornamos objetos de clases como Vector. Esto puede causar errores al almacenar objetos de distinto tipo en un mismo vector. –Otra desventaja es la dificultad para leer el código. Vector elements; // no nos dice nada sobre los elementos que deseamos almacenar. –La gran ventaja de no usar templates es la simplificación del compilador

4 Excepciones Como en C++, Java posee mecanismos para enfrentar errores detectados durante la ejecución. En métodos siempre es posible retornar un código de error. Se puede asignar una variable de error “global” Se puede imprimir un mensaje de error. Las soluciones previas suelen ser usadas en tareas en la Universidad pero generalmente no son aceptable en productos comerciales. Como en C++, Java ofrece un mecanismo para señalar excepciones. En Java los objetos lanzados deben ser instancias de clases derivadas de Throwable. Ej. Throwable e = new IllegalArgumentException(“Stack underflow”); throw e; O alternativamente throw new IllegalArgumentException(“Stack underflow”);

5 Manejo de Excepciones El manejo de excepciones se logra con el bloque try try { // código } catch (StackError e ) { // código que se hace cargo del error reportado en e } El bloque try puede manejar múltiples excepciones: try { // código } catch (StackError e ) { // código para manejar el error de stack } catch (MathError me) { // código para manejar el error matemático indicado en me. }

6 Captura de Excepciones (completo) El bloque try tiene la forma general: try { //sentencias } catch (e-type1 e ) { // sentencias } catch (e-type2 e ) { // sentencias }... finally { //sentencias } La cláusula finally es ejecutada con posterioridad cualquiera sea la condición de término del try (sin o con error). Esta sección permite dejar las cosas consistentes antes del término del bloque try.

7 Captura de Excepciones: Ejemplo 1 public static void doio (InputStream in, OutputStream out) { int c; try { while (( c=in.read()) >=0 ) { c= Character.toLowerCase( (char) c); out.write( c ); } } catch ( IOException e ) { System.err.println(“doio: I/O Problem”); System.exit(1); } }

8 Captura de Excepciones: Ejemplo try { FileInputStream infile = new FileInputStream(argv[0]); File tmp_file = new File(tmp_name);.... } catch (FileNotFoundException e) { System.err.println(“Can´t open input file “+ argv[0]); error = true; } catch (IOException e ) { System.err.println(“Can´t open temporary file “+tmp_name); error = true; }finally { if ( infile != null) infile.close(); if (tmp_file != null) tmp_file.close(); if (error) System.exit(); } El código de la sección finally es ejecutado no importando si el bloque try terminó normalmente, por excepción, por return, o break.

9 Tipos de Excepciones Las hay de dos tipos Aquellas generadas por el lenguaje Java. Estas se generan cuando hay errores de ejecución, como al tratar de acceder a métodos de una referencia no asignada a un objeto, división por cero, etc. Aquellas no generadas por el lenguaje, sino incluidas por el programador. El compilador chequea por la captura de las excepciones lanzadas por los objetos usados en el código. Si una excepción no es capturada debe ser relanzada.

10 Reenviando Excepciones public static void doio (InputStream in, OutputStream out) throws IOException // en caso de más de una excepción throws exp1, exp2, expi { int c; while (( c=in.read()) >=0 ) { c= Character.toLowerCase( (char) c); out.write( c ); } } Alternativamente: public static void doio (InputStream in, OutputStream out) throws Throwable { int c; try { while (( c=in.read()) >=0 ) { c= Character.toLowerCase( (char) c); out.write( c ); } } catch ( Throwable t ) { throw t; } } !!! Si el método usa la cláusula throw debe indicarlo en su declaración con la cláusula throws. Si la excepción no es capturada, se entiende reenviada En este caso el método envía una excepción - que aquí corresponde al mismo objeto capturado -por lo tanto debe declarase en la cláusula throws.

11 Creación de tus propias excepciones Siempre es posible lanzar alguna excepción de las ya definidas en Java (IOException por ejemplo). También se puede definir nuevas excepciones creando clases derivadas de las clases Error o Exception. class ZeroDenominatorException extends Exception {private int n; public ZeroDenominadorException () {} public ZeroDenominadorException(String s) { super(s); } public setNumerator(int _n) { n = _n} // otros métodos de interés } Luego la podemos usar como en:.... public Fraction (int n, int d) throws ZeroDenominatorException { if (d == 0) { ZeroDenominatorException myExc = new ZeroDenominatorExceptio(“Fraction: Fraction with 0 denominator?”); myExc.setNumerator(n); throw (myExc);.... }

12 Cuando no podemos relanzar una excepción Hay situaciones en que estamos obligados a manejar una excepción. Consideremos por ejemplo: class MyApplet extends Applet { public void paint (Graphics g) { FileInputStream in = new FileInputStream(“input.dat”); //ERROR.... } } Se crea aquí un problema porque dado que la intención es sobremontar un método de la clase Applet - método paint- el cual no genera ninguna excepción. Si un método no genera excepciones la función que lo sobremonta no puede lanzar excepciones (problema en Java). Lo previo obliga a que debamos hacernos cargos de la excepción. class MyApplet extends Applet { public void paint (Graphics g) { try { FileInputStream in = new FileInputStream(“input.dat”); //ERROR.... } catch (Exception e) {//......} }