Tema 4. Excepciones en Java



Documentos relacionados
HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Excepciones. Excepciones

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

CAPÍTULO 4: EXCEPCIONES EN JAVA

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

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

Java: control de excepciones

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

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

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Excepciones. Una excepción es una situación anómala a la que llega la ejecución de un programa

Resumen Manejo de Excepciones

Manejo de Excepciones

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

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

Módulo 11: MANEJO DE EXCEPCIONES 11-1

Programación en Java. Instructor:

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Guía práctica de estudio 10: Excepciones y errores

Flujos (streams) Programación. Licenciatura Lingüística y Nuevas Tecnologias Nadjet Bouayad-Agha

Uso de excepciones en Java

TEMA 8. Agenda. Excepciones

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

String s = t.readline() 4. Si el valor leído desde teclado, se requiere almacenar en una variable de un tipo diferente a

Procesamiento distribuido en Java

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Cuestiones I:

JAVA: Excepciones. Errores

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

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

Excepciones e hilos. Acceso a la red - Ejercicios

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

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

Apuntes de Java. Tema 6: Excepciones. Uploaded by Ingteleco

Instituto Tecnológico de Zacatecas. Departamento de Sistemas y Computación. Licenciatura en Informática. Organización de Datos

Introduciendo datos desde el

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

Tema 14: Excepciones

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Guía - Taller # 2 (JAVA)

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Parte I (7.5)

Tema 5 Corrección y Robustez Excepciones en Java

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

INF 473 Desarrollo de Aplicaciones en Java

Conceptos básicos de Orientación a Objetos, manejo con Eclipse.

Estructuras de control selectivas

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

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

Java: control de excepciones

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Parte I (7.5)

Ejercicios de tratamiento de errores

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Tema 6. Threads: programas multitarea

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

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

PRACTICA Nº Realizar una aplicación que calcule el volumen de una esfera, que viene dado por la fórmula:

Procesadores del Lenguaje Práctica 1: Ejemplo sencillo

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

Introducción a Java - Ejercicios

Entrada y Salida con Java

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

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

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

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

Examen Teórico Convocatoria de Junio de 2012

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

Java Optional ifpresent y como utilizarlo

Entrada y Salida de datos

JAVA 1. Introducción

Unidad 3 Programación Orientada a Objetos. Programación JAVA. Parte I:

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

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

Programación Orientada a Objetos. Java: Excepciones

Transcripción:

Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática

Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer el código de manejo de excepciones (controladores de excepciones) del código base del programa. Una excepción se lanza cuando el entorno de ejecución se encuentra una condición de excepción. Se puede producir por: Una condición anormal de ejecución (excepción síncrona) detectada por la JVM. La ejecución del programa detecta una instrucción throw. Un error interno de la JVM (excepción asíncrona) o la llamada al método stop de la clase Thread. Facultad de Informática Luis Rodríguez Baena, 2003 2

Excepciones (II) Cuando se lanza una excepción: Se crea un objeto excepción que desciende de la clase Trowable o de alguna de sus subclases. Se detiene el flujo normal de ejecución y se lanza una referencia al objeto excepción creado. Se interpone el mecanismo de gestión de excepciones que busca un lugar para continuar la ejecución. Si existe un gestor de excepciones se realizan sus instrucciones. El gestor que se ejecuta es el más cercano en la pila de ejecución de métodos. Si no existe se lanza el gestor de excepciones por omisión que lanza un mensaje informativo y detiene la ejecución del programa. Facultad de Informática Luis Rodríguez Baena, 2003 3

Capturar una excepción Cuando un método guarda una excepción se asume que esta será capturada y tratada. Esa captura se produce en la región guardada. Cualquier método que pueda producir una excepción deberá introducirse en una región guardada. El bloque try debe envolver cualquier código o invocación a un método que lanze una excepción. try{ // Código que produce una excepción Facultad de Informática Luis Rodríguez Baena, 2003 4

Gestionar una excepción (I) Los distintos tipos de excepción se gestionan mediante un controlador de excepciones. Los controladores aparecen después del bloque try y se identifican mediante la palabra clave catch. Cada controlador es un pequeño método que toma un único argumento de un tipo concreto que corresponde con el tipo de excepción capturada. try{... catch(tipoexcepción1 idexcepción1){ //Tratamiento de la excepción TipoExcepción1 catch(tipoexcepción2 idexcepción2){ //Tratamiento de la excepción TipoExcepción2... Facultad de Informática Luis Rodríguez Baena, 2003 5

Gestionar una excepción (II) El entorno de ejecución buscará la cláusula catch cuyo tipo de argumento coincida con la excepción producida. Cuando la encuentra ejecuta las instrucciones del bloque. En ocasiones el bloque puede modificar las condiciones que han producido el error y volver a ejecutar el método. En otras ocasiones simplemente se podrá informar del error y detener la ejecuación. Bloque finally. Aparece después de los gestores de excepciones. Proporciona una sección de código que se ejecutará se produzca o no la excepción. Facultad de Informática Luis Rodríguez Baena, 2003 6

La clase Throwable (I) Superclase de todas las clases de excepción. Dos tipos heredados: Error. Representa los errores del sistema y los errores en tiempo de compilación. No se captura salvo en ocasiones especiales. Exception. Tipo básico que puede lanzarse desde cualquier método de la biblioteca Java. Es el utilizado para capturar y crear nuevas excepciones. Facultad de Informática Luis Rodríguez Baena, 2003 7

La clase Throwable (II) El subtipo RuntimeException. El sistema es el encargado de lanzarla. Cuando se produce una excepción de este tipo el sistema invoca al método printstacktrace que proporciona información sobre el método que produjo la excepción. Junto con las excepciones de la clase Error, forman las excepciones no comprobadas. No es necesario capturarlas. Cualquier otra excepción es una excepción comprobada y es necesaria su captura. El compilador da un error si no se captura una excepción comprobada. Facultad de Informática Luis Rodríguez Baena, 2003 8

La clase Throwable (III) Constructores de la clase Throwable. NombreClase() genera un objeto de la clase con un mensaje de error nulo. NombreClase(String mensaje), genera un objeto de la clase con un mensaje descriptivo. Métodos de la clase Throwable. String getmessage(). Muestra el mensaje asociado a la excepción. String tostring(). Devuelve una descripción del objeto en forma de cadena. void printstacktrace(printstream). Imprime el objeto y la traza de llamadas lanzada. Facultad de Informática Luis Rodríguez Baena, 2003 9

Generación de excepciones El método throw. Se utiliza para lanzar una excepción. throw expresión;. expresión debe tener como resultado un valor asignable a la clase Throwable. Métodos con la cláusula throws. Todos los métodos capaces de lanzar excepciones, deben tener una cláusula throws. throws listaexcepcionescomprobadas. La lista contiene, separadas por comas, todas las excepciones que puede lanzar y que no son capturadas en el método. Facultad de Informática Luis Rodríguez Baena, 2003 10

Creación de excepciones Es posible crear nuevas excepciones ampliando la clase Exception. La nueva clase debe tener al menos un constructor que llame al constructor de la superclase. Por ejemplo Exception(String mensaje). class NumeroNegativoException extends Exception { NumeroNegativoException(){ super("el numero debe ser mayor o igual que 0"); Facultad de Informática Luis Rodríguez Baena, 2003 11

Ejemplo: método factorial static long Factorial(int n) throws NumeroNegativoException{ if(n<=0) throw new NumeroNegativoException(); int f=1; for(int i=1;i<=n;i++) f*=i; return f; public static void main(string args[]){ int i; BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); String s = new String(); try{ s=entrada.readline(); //Convertir la entrada en entero i = Integer.parseInt(s); System.out.println("Factorial de " + i + ": " + Factorial(i)); catch(numeronegativoexception e){ System.err.println(e.getMessage()); catch(ioexception e){ catch(numberformatexception e){ //Se lanza la cadena s no se puede convertir a entero System.err.println("Formato erroneo"); Facultad de Informática Luis Rodríguez Baena, 2003 12

Apéndice: entrada de datos por teclado (I) Uno de los métodos que permite la entrada de datos por teclado es el método readline(). En una de sus versiones pertenece a la clase BufferedReader. Desciende de la clase Reader que proporciona una entrada basada en caracteres Unicode. Su constructor precisa un objeto de la clase InputStreamReader. Reciben con flujo (stream) de entrada un fluyo de bytes y lo convierten a caracteres Unicode. Para envolver la entrada de teclado (System.in) se utilizará un constructor similar a new InputStreamReader(System.in). La cabecera de readline() contiene una cláusula throws IOException por lo que es necesario utilizar un bloque try para su utilización. El método devuelve una cadena que deberemos convertir al formato apropiado. Facultad de Informática Luis Rodríguez Baena, 2003 13

Apéndice: entrada de datos por teclado (II) Todo junto. package net.colimbo.util; import java.io.*; public class Teclado{ private static String leer() throws IOException{ BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); return teclado.readline(); //Leer un dato entero public static int leerint() throws IOException{ return Integer.parseInt(leer()); //Leer un dato double public static double leerdouble() throws IOException{ return Double.parseDouble(leer()); //Leer una cadena public static String leerstring() throws IOException{ return leer(); Facultad de Informática Luis Rodríguez Baena, 2003 14