JAVA: Excepciones. Errores

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

PROGRAMACIÓN GENÉRICA

Java: control de excepciones

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Excepciones. Excepciones

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Java: control de excepciones

Formato para prácticas de laboratorio

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Si bien hay gran cantidad de excepciones, todas derivan de la clase Exception, además de las excepciones ya manejadas, se pueden crear propias.

Tema 4. Excepciones en Java

UD 4 GESTIÓN DE ERRORES. Pedro J. Ponce de León. Versión

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

Tema 5 Corrección y Robustez Excepciones en Java

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

Tema 14: Excepciones

Programación Orientada a Objetos. Java: Excepciones

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Excepciones LSUB, GSYC, URJC. Monday, February 4, 13

Estructura de datos y Programación

Presentación. Programación I. Programación Orientada a Objetos. :: Prof. Yeniffer Peña

Programación Orientada a Objetos. Java: Excepciones

Uso de excepciones en Java

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

CAPÍTULO 4: EXCEPCIONES EN JAVA

Resumen Manejo de Excepciones

MANEJO DE EXCEPCIONES en C++ Dr. Oldemar Rodríguez R. Escuela de Informática Universidad Nacional

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Objetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.

Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011

Manejo de excepciones en Java. ELO329: Diseño y Programación Orientados a Objetos Agustín J. González

Manejo de errores: Excepciones en Java. ELO329: Diseño y Programación Orientados a Objetos

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Estructuras de control selectivas

TEMA 8. Agenda. Excepciones

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Diseño y Programación Orientados a Objetos 29 de Abril de Primer Certamen

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Implementación de clientes con CORBA y Java

HERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)

Manejo de Excepciones

Java. Introducción a la Programación Orientada a Objetos

Reconociendo tipos de excepciones comunes

Excepciones en Programación Orientada a Objetos

Código Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

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

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 EXCEPCIONES. Ing. Bruno López Takeyas, M.C.

Examen Teórico Convocatoria de Junio de 2012

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

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

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

James Gosling, creador de Java

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

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

4. Operadores Operador asignación

INF 473 Desarrollo de Aplicaciones en Java

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

INTRODUCCION A LA PROGRAMACION EN JAVA

Por el contrario System.in es un byte Stream sin caracteristicas de character Stream.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Tema 15: Aserciones 0

Excepciones e hilos. Acceso a la red - Ejercicios

Examen escrito de Programación 1

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

Metodología y Tecnología de la Programación

Unidad VI. archivos de texto llano o texto simple por carecer de información destinada a generar formatos y tipos de letra.

Elementos léxicos del lenguaje de programación Java

Construcciones del Lenguaje Java

Definición. Mónica E. García García Feb 07

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Ficheros y streams. Desde el punto de vista de Java, cada fichero no es más que una secuencia o flujo de bytes [stream].

Métodos CON valor de retorno

Introducción a Java. Introducción a Java. Programación I

Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros

Tema 2: Errores y Excepciones: Modelo y Gestión. Modelización Java de la Jerarquía de

JAVA 1. Introducción

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Tema 5 Corrección y Robustez Excepciones en Java

Guía - Taller # 2 (JAVA)

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Diferentes Perspectivas de un Ordenador

Curso Informática Lección 6. Métodos de objetos y clases

Ejercicios de tratamiento de errores

fundamentos de programación (unidad 7) herencia y relaciones entre clases

Bloque II. Elementos del lenguaje de programación Java

FUNCIONES O MÉTODOS. Algoritmia y Programación

Tecnología de Programación

Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Transcripción:

JAVA: Excepciones Lenguajes de Programación - Java: Excepciones 1 Errores Qué ocurre si un programa está usando un archivo en CD y el usuario lo extrae antes de tiempo? Qué ocurre si el usuario de un programa introduce un carácter por teclado, p.ej. W, cuando el programador ha previsto que se introduzca un número entero? Las aplicaciones deben de ser robustas y saber manejar situaciones inesperadas (excepciones). En caso contrario: El avión se cae en vuelo, el misil Tomahawk cae en la sede de la Cruz Roja, la nave espacial choca contra la superficie de Marte, etc... Lenguajes de Programación - Java: Excepciones 2

El accidente del Ariane 5 Lenguajes de Programación - Java: Excepciones 3 Ariane 5 (Datos) El sistema de control de vuelo del Ariane 5 pertenece a un diseño estándar. Un Sistema de Referencia Inercial (SRI) mide la altitud del cohete y sus movimientos en el espacio. Los datos del SRI se transmiten a través de un bus de datos al Ordenador de a bordo (On-Board Computer OBC). El OBC ejecuta el programa de vuelo, controla las toberas de los tanques de combustible sólido y el motor criogénico Vulcain. Lenguajes de Programación - Java: Excepciones 4

Ariane 5 (Datos) Para mejorar la fiabilidad hay una considerable redundancia de maquinaria. Por ejemplo hay dos SRIs operando en paralelo con idéntico hardware y software. Un SRI está activo mientras que el otro está en stand-by. Si el OBC detecta que el SRI activo ha fallado entonces utiliza inmediatamente el otro. Del mismo modo hay dos OBC, y otras unidades del Sistema de Control de Vuelo también están duplicadas. El diseño del SRI del Ariane 5 es prácticamente idéntico al del Ariane 4, especialmente en lo referido al software. Lenguajes de Programación - Java: Excepciones 5 Ariane 5 (Vuelo 501) La lanzadera espacial comenzó a desintegrarse sobre H 0 +39 segundos debido a la elevada carga aerodinámica causada por un ángulo de ataque de más de 20 grados que provocó la separación de los tanques lo que resultó en la activación del sistema de autodestrucción. El ángulo de ataque fue causado por una desviación en las toberas de los tanques de combustible sólido. Estas desviaciones fueron ordenadas por el software del OBC utilizando datos trasmitidos por el SRI activo (SRI2). Parte de estos datos no contenían datos de vuelo sino un patrón de bits del ordenador del SRI2 que fue interpretado como datos de vuelo. Lenguajes de Programación - Java: Excepciones 6

Ariane 5 (Vuelo 501) La razón de que el SRI2 no enviara datos correctos fue que la unidad había declarado un error debido a una excepción software. El OBC no pudo utilizar el SRI1 ya que esta unidad también había dejado de funcionar en el ciclo de datos anterior (72 milisegundos antes) por la misma razón que el SRI2. La excepción de software en el SRI fue causada durante la conversión de punto flotante de 64 bits a un valor entero con signo de 16 bits. El número en coma flotante que fue convertido tenía un valor mayor que el podía ser representado en un entero con signo de 16 bits. Resultando en un Operand Error (código Ada). Lenguajes de Programación - Java: Excepciones 7 Ariane 5 (Vuelo 501) El Operand Error ocurrió debido a un valor inesperadamente elevado de una variable BH, Horizontal Bias, relacionada con la velocidad horizontal. El valor de BH era mucho más elevado que lo esperado porque la parte inicial de la trayectoria del Ariane 5 difiere de la del Ariane 4 y resulta en valores mayores de la velocidad horizontal. El procedimiento al encontrar un error establecía que (tratamiento de la excepción): El fallo debe ser indicado en el bus de datos. El contexto del fallo debe ser almacenado en una memoria EEPROM. El procesador SRI debe apagarse. Lenguajes de Programación - Java: Excepciones 8

Cómo se tratan los Errores? Opción 1: No se tratan Resultados impredecibles Opción 2: Quien detecta el error decide qué hacer Poco flexible Opción 3: Quien detecta el error informa de que el error se ha producido. Lenguajes de Programación - Java: Excepciones 9 Ejemplo de tratamiento (?) Detecta el posible error. Detecta el posible error. public void desapilar () { if ( this.esvacia() ) System.err.println ("Error: Desbordamiento inferior."); else Trata Trata el el error? error? lacima = lacima.siguiente(); Informa del del error? error? No No hace hace nada? nada? Lenguajes de Programación - Java: Excepciones 10

Ejemplo de tratamiento (mejor) Detecta el posible error. Detecta el posible error. public boolean desapilar () { Informa del del error: error: if ( this.esvacia() ) Indica, Indica, a quien quien ha ha invocado return ( false ); este este método, que que no no ha ha podido else { desapilar lacima = lacima.siguiente(); return ( true ); Informar de de un un error error NO NO quiere quiere decir decir mostrar mensajes por por pantalla. Esto Esto es es útil útil durante el el desarrollo pero pero no no durante la la ejecución. Lenguajes de Programación - Java: Excepciones 11 Ejemplo (problema 1) public boolean desapilar () { if ( this.esvacia() ) return ( false ); else { lacima = lacima.siguiente(); return ( true ); Qué Qué pasa pasa si si este este método puede puede detectar varios varios tipos tipos de de error? error? Cómo saber saber qué qué error error se se ha ha producido? Lenguajes de Programación - Java: Excepciones 12

Ejemplo (solución 1 y problema 2) public int desapilar () { //código Qué Qué pasa pasa si si este este método necesita devolver el el dato dato desapilado? No No puede puede devolver 2 valores (error (error y dato). dato). Lenguajes de Programación - Java: Excepciones 13 Tratamiento adecuado: Excepciones Solución propuesta: Un método puede retornar dos tipos de información: Datos (return) Errores (throw) Analogía: System.out y System.err como dispositivos de salida con finalidad diferente. Los valores de retorno de error se denominan Excepciones. Lenguajes de Programación - Java: Excepciones 14

Excepciones Una excepción es un problema que impide continuar con la ejecución de un método p.q. no tiene suficiente información para seguir adelante. Existen unos requisitos para que un método pueda funcionar correctamente, si estos requisitos no se cumplen se tiene una excepción. Ejemplo: Un método tiene como argumento un valor entero que representa un año. Requisito: el valor del año no puede ser un valor entero negativo. Excepción: si año < 0 Lenguajes de Programación - Java: Excepciones 15 Fases del tratamiento de Excepciones 1. Detectar e informar del error: Lanzamiento de Excepciones throw Un método detecta una condición anormal que le impide continuar con su ejecución y finaliza lanzando un objeto Excepción. 2. Recoger el error y tratarlo: Captura de Excepciones try-catch Un método recibe un objeto Excepción que le indica que otro método no ha terminado correctamente su ejecución y decide actuar en función del tipo de error. Lenguajes de Programación - Java: Excepciones 16

Ejemplo public double calculo ( double a, double b ) { if ( (a-b) < 0 ) throw Excepcion else return sqrt (a-b); Detección y lanzamiento de de la la Excepción try { res = calculo (x,y); catch ( Excepcion ) { res = calculo (y,x); System.out.print ( res ); try { res = calculo (a,b); catch ( Excepcion ) { System.exit(-1); Aplicación 1: 1: tratamiento ligero Aplicación 2: 2: tratamiento fatal fatal Lenguajes de Programación - Java: Excepciones 17 Lanzamiento de Excepciones Se puede lanzar una excepción mediante la sentencia: throw referencia Donde la referencia corresponderá a un objeto de alguna subclase de la clase Exception. El lanzamiento de una excepción implica que el método que se esté ejecutando finalice inmediatamente. Si un método puede lanzar una excepción hay que avisarlo: public void desapilar () throws Exception { //codigo Ojo, Ojo, throws = lanza throw = lanzar Subclases de de Exception que que pueden ser ser lanzadas Lenguajes de Programación - Java: Excepciones 18

Ejemplo desapilar () Lanza Lanza excepciones de de tipo tipo Exception public void desapilar () throws Exception { if ( this.esvacia() ) throw ( new Exception ( Pila vacia ) ); else lacima = lacima.siguiente(); Lanzar Lanzar un un objeto objeto de de la la clase clase Exception Lenguajes de Programación - Java: Excepciones 19 Ejemplo cima () public Object cima () { if ( this.esvacia() ) { System.err.println ("Error: Desbordamiento inferior."); return ( new Object() ); Versión original, sin sin excepciones. else return ( lacima.dato() ); public Object cima () throws Exception { if ( this.esvacia() ) throw ( new Exception ( Pila vacia ) ); else Nueva Nueva versión, lanza lanza return ( lacima.dato() ); excepciones. Lenguajes de Programación - Java: Excepciones 20

Captura de Excepciones Recoger la excepción: Para poder recoger y tratar una excepción es preciso declarar un bloque try : try { //sentencias que pueden lanzar excepciones Si se produce una excepción en el bloque try, ésta es capturada y pasa a ser tratada El tratamiento de una excepción se realiza mediante funciones catch: catch (Exception e) { //sentencias que tratan la excepción e Lenguajes de Programación - Java: Excepciones 21 Ejemplo: Pilas con Excepciones pilavec_excep pila_excep pilaptr_excep pila_excep Lenguajes de Programación - Java: Excepciones 22

Ejemplo Test Captura Tratamiento class test_pila_excep { public static void main (String[] args) { pila_excep mi_pila; mi_pila = new pilavec_excep(); try { for (int veces = 0; veces < 2; veces++) { for (int i = 1; i < 110; i++ ) //110 para generar error mi_pila.apilar ( new Integer (i) ); imprimir ( mi_pila ); mi_pila = new pilaptr_excep(); catch ( Exception e ) { System.err.println (); System.err.println (e); System.out.println("FIN."); Lenguajes de Programación - Java: Excepciones 23 Ejemplo Test (cont.) private static void imprimir ( pila_excep p ) throws Exception { System.out.print ("Contenido de la pila "); if ( p instanceof pilavec_excep ) System.out.println ("(con vectores):"); else System.out.println ("(enlazada):"); while (! p.esvacia() ) { System.out.print ( p.cima() + "," ); p.desapilar (); System.out.println (); No //fin clase No hay hay captura ni ni tratamiento, las las Excepciones son son relanzadas tal tal y como como llegan. llegan. Hay Hay que que avisar avisar del del lanzamiento. Lenguajes de Programación - Java: Excepciones 24

Crear nuevos tipos de Excepciones El nombre de la clase de la Excepción informa del problema. Si hay nuevos problemas puede convenir definir nuevas clases para las Excepciones. class PilaLlenaException extends Exception { Nuevo Nuevo tipo tipo de de Excepción PilaLlenaException ( Object x ) { super ( Pila Llena ); dato = x; public void apilar ( Object x ) throws PilaLlenaException public Object valor () { return ( dato ); private Object dato; Finalidad: Almacenar el el dato dato que que genera genera el el problema. Lenguajes de Programación - Java: Excepciones 25 Revisión del Test public static void main (String[] args) { pila_excep mi_pila; Orden! mi_pila = new pilavec_excep(); try { for (int veces = 0; veces < 2; veces++) { for (int i = 1; i < 110; i++ ) //110 para generar error mi_pila.apilar ( new Integer (i) ); imprimir ( mi_pila ); mi_pila = new pilaptr_excep(); catch ( PilaLlenaException e ) { System.err.println ( e + generada por: + e.valor()); e.printstacktrace(); catch ( Exception e ) { System.err.println (e); Traza Traza de de los los métodos por por los los que que ha ha pasado finally: Se ejecuta haya o no Excepción. finally: Se ejecuta haya o no Excepción. finally { System.out.println("Espero que llegue aqui. FIN."); Lenguajes de Programación - Java: Excepciones 26

Ejecución del Test try { for (int veces = 0; veces < 2; veces++) { for (int i = 1; i < 110; i++ ) //110 para generar error mi_pila.apilar ( new Integer (i) ); imprimir ( mi_pila ); mi_pila = new pilaptr_excep(); Lanza Lanza Excepción fin fin try try catch ( PilaLlenaException e ) { System.err.println ( e + generada por: + e.valor()); e.printstacktrace(); catch ( Exception e ) { System.err.println (e); finally { System.out.println("Espero que llegue aqui. FIN."); PilaLlenaException: Pila Llena generada por: 101 PilaLlenaException: Pila Llena at pilavec_excep.apilar(pilavec_excep.java:17) at test_pila_excep.main(test_pila_excep.java:11) Espero que llegue aqui. FIN. Lenguajes de Programación - Java: Excepciones 27 Relevancia de las excepciones Cualquier excepción lanzada por un método es una parte pública de él: los usuarios del método deben conocer qué excepciones puede lanzar para poder decidir conscientemente qué hacer con ellas. Las excepciones que puede lanzar un método tienen el mismo nivel de importancia que los argumentos o el valor de retorno del método. Las excepciones deben de ser documentadas. Lenguajes de Programación - Java: Excepciones 28

Jerarquía de clases lanzables Lenguajes de Programación - Java: Excepciones 29 RunTimeException Las excepciones predefinidas de Java que derivan de la clase RunTimeException tienen un tratamiento especial. Las RTE representan problemas detectados por el sistema RT (Runtime System). Incluye: Excepciones artiméticas (división por cero) Excepciones de punteros: NullPointerException Excepciones de indexación (índices inválidos en un array): ArrayIndexOutofBoundsException Normalmente, el coste de comprobar RTE excede el beneficio de capturarlas o especificarlas. Por esa razón, el compilador no exige tratar las RTE : Avisar (throws) de que un método lanza una RTE. Tratar explícitamente (catch) una RTE. Lenguajes de Programación - Java: Excepciones 30

Ventajas de las Excepciones Separar el Código que maneja los errores del Código normal Propagar los errores en la pila de llamadas Agrupar y diferenciar los tipos de errores Lenguajes de Programación - Java: Excepciones 31 class Uno{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 Lenguajes de Programación - Java: Excepciones 32

class Uno{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 44 45 46 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 46 Lenguajes de Programación - Java: Excepciones 33 class Dos{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 Lenguajes de Programación - Java: Excepciones 34

class Dos{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 43 44 45 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 45 Lenguajes de Programación - Java: Excepciones 35 class Tres{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 Lenguajes de Programación - Java: Excepciones 36

class Tres{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); catch(numberformatexception e){ valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 2 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); 5 6 Lenguajes de Programación - Java: Excepciones 37 class Cuatro{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); throw new IOException(); catch(ioexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); Lenguajes de Programación - Java: Excepciones 38 5 6

class Cuatro{ private static int metodo(){ int valor=0; valor = valor +1; valor = valor + Integer.parseInt("W"); System.out.println("Valor al final del try: " + valor); throw new IOException(); catch(ioexception e){ valor = valor + Integer.parseInt("42"); System.out.println("Valor al final del catch: " + valor); finally{ System.out.println("Valor al final de finally: " + valor); System.out.println("Valor antes del return: " + valor); return valor; 1 2 3 4 2 public static void main(string[] args){ System.out.println(metodo()); catch(exception e){ System.err.println("Excepcion en metodo()"); e.printstacktrace(); Lenguajes de Programación - Java: Excepciones 39 5 6