Federico Peinado

Documentos relacionados
Tema 4. Excepciones en Java

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

Fundamentos de Computadores y Lenguajes

Excepciones. Excepciones

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

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

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Federico Peinado

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Consiste en asumir que el usuario podrá usar de forma incorrecta y por tanto el programador deberá contemplar esos errores.

TEMA 8. Agenda. Excepciones

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

Manejo de Excepciones

CAPÍTULO 4: EXCEPCIONES EN JAVA

Procesadores del Lenguaje Práctica 1: Ejemplo sencillo

Formato para prácticas de laboratorio

Sesión 9. TEMA 11 Clases abstractas. Manejo de errores y excepciones

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

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

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Introducción a Java (2)

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

Federico Peinado

Examen Teórico. Convocatoria de Febrero de 2015

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

Federico Peinado

Programación orientada a objetos. Capítulo 12 Manejo de errores

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

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 1

Excepciones e hilos. Acceso a la red - Ejercicios

Tipos DataInputStream/DataOutputStream: L/E de datos de tipo simple y Cadenas (Strings) ObjectInputStream/ObjectOutputStream: para persistencia de obj

Lenguaje Java. Sesión 3: Tratamiento de errores. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Ejercicios de tratamiento de errores

Tema 5 Corrección y Robustez Excepciones en Java

Reconociendo tipos de excepciones comunes

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

Maestro Coordinador de la Carrera Gestión de la Calidad Director de la Facultad

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

Ejercicios de tratamiento de errores

Uso de excepciones en Java

Fundamentos de Computadores y Lenguajes

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

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

IIC1103 Introducción a la Programación. Ayudantía: Archivos

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

Tema 14: Excepciones

Prácticas de Programación

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

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Federico Peinado

Programación Orientada a Objetos. Java: Excepciones

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

Tema 3. Tratamiento de Excepciones

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Programación Orientada a Objetos. Java: 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.

Manejo de Excepciones Para capturar y manejar las excepciones Java proporciona la sentencia try, catch y finalty. Entre un try y un catch se escribe

Excepciones. Excepciones. Excepciones. Excepciones. Condiciones inesperadas en un programa

Introducción a Java - Ejercicios

Estructuras de Datos Clase 1 -Introducción

Tema 6 Corrección y Robustez Excepciones en Java. Programación Orientada a Objetos Curso 2016/2017

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

Estructuras de Datos. Clase 1 - Introducción. Dr. Sergio A. Gómez.

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

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Federico Peinado

Java en 2 horas. Rodrigo Santamaría

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

Estructuras de Datos Clase 1 - Introducción

Resumen Manejo de Excepciones

Construcciones del Lenguaje Java

INF 473 Desarrollo de Aplicaciones en Java

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

Datos Elementales y formato de un programa en Java

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

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

MASTER EN MODELIZACIÓN MATEMÁTICA, ESTADÍSTICA Y COMPUTACIÓN Curso: Bases de datos y programación orientada a objetos Parte POO

Java: control de excepciones

Procesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo

Esta aplicación se compone de 3 programas o clases, según el siguiente esquema: SueldoMedio.java. Sueldo.java

JAVA: Excepciones. Errores

Excepciones en Programación Orientada a Objetos

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

INTRODUCCION A LA PROGRAMACION EN JAVA

PROGRAMACIÓN EN JAVA

Examen Teórico. Convocatoria de Febrero de 2016

Lenguaje de programación con JAVA

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Tema 2: Análisis léxico

Implementación de clientes con CORBA y Java

Federico Peinado

Implementación del nivel de datos usando db4o

Tema 2: Análisis léxico

Fundamentos de Programación

Transcripción:

Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

2

Los representa la clase java.io.file Atributos y métodos para manipular ficheros: pathseparator Cadena que representa la separación entre directorios dentro de una ruta (dependiente del S.O. subyacente) canread canwrite createnewfile delete isdirectory isfile mkdir 3

Su tratamiento se hace con los streams que ya hemos estudiado anteriormente Pueden usarse para crear flujos de entrada/salida (FileInputStream / FileOutputStream) Pueden usarse para crear lectores/escritores (FileReader / FileWriter) Van a sufrir un rediseño total en Java 7 Una correspondencia aproximada entre métodos: http://download.oracle.com/javase/tutorial/essen tial/io/legacy.html#mapping 4

Se pueden cargar de (o guardar desde) un objeto de la clase java.util.properties Es una subclase de Hashtable donde tanto la clave como el valor son cadenas de texto Métodos para trabajar con propiedades: getproperty list load loadfromxml setproperty store storetoxml 5

Profesor = Federico Peinado Asignatura = LPS Dificultad = Sin comentarios... # Sample Messages MESSAGE.INTRO: Game engine v.1 MESSAGE.HELP: You will not get help from me MESSAGE.QUIT: Coward... MESSAGE.GAMEOVER : You lose. Bye bye!...! Comentario tonto Cantidad_de_oro 14! Más comentarios... Cantidad_de_madera : 2300 Vidas_extra = No quedan 6

Clase java.io.streamtokenizer que actúa como analizador simple para extraer los lexemas (tokens) de un flujo de entrada Puede servir para analizar el flujo de un fichero de texto en un cierto lenguaje formal de sintaxis básica Utiliza una tabla de categorías léxicas y una serie de centinelas (flags) para variar sus funciones Reconoce identificadores tipo Java, números, cadenas de texto entrecomilladas y comentarios Para lenguajes más complejos, hay librerías Java muy avanzadas con las que hacer procesadores de lenguajes ANTLR http://www.antlr.org 7

Atributos interesantes nval y sval Variables donde se almacena el valor (numérico o textual) del último lexema leído TT_EOF, TT_EOL, TT_NUMBER y TT_WORD Constantes enteras que dicen si el último lexema ha sido fin de flujo, de línea, número u otra cosa Curiosidad: La clase no usa enumerados por ser muy vieja Constructor (recibe un Reader) Por eficiencia conviene envolver el flujo de entrada así: new BufferedReader(new InputStreamReader(inStream)) Métodos interesantes nexttoken lineno Número de línea por el que se encuentra el análisis Varios para configurar las definiciones léxicas de cada token antes de empezar a analizar, como commentchar, ordinarychar, quotechar, etc. 8

JArgs http://jargs.sourceforge.net Releases (última de 2005) Librería JAR que debemos usar Documentación del API CVS (repositorio colaborativo, al ser un proyecto de código libre) Lista de correo, información y contacto del autor Pequeño analizador para los argumentos que recibe la aplicación por línea de comandos Ej: run -c engine.cfg ExampleGame.game 9

import jargs.gnu.cmdlineparser; // Teniendo el JAR en el Build Path... public static void main(string[] args) { CmdLineParser parser = new CmdLineParser(); CmdLineParser.Option debug = parser.addbooleanoption('d', "debug"); CmdLineParser.Option size = parser.addintegeroption("size"); CmdLineParser.Option name = parser.addstringoption('n', "name");... try { parser.parse(args); } catch (CmdLineParser.OptionException e) { System.err.println(e.getMessage()); // Mostrar opciones las disponibles al usuario (debug, size...) System.exit(-1); } Boolean debugvalue = (Boolean)parser.getOptionValue(debug); Integer sizevalue = (Integer)parser.getOptionValue(size); String namevalue = (String)parser.getOptionValue(name);... String[] otherargs = parser.getremainingargs(); // Lanzar el programa con las correspondientes opciones activas System.exit(0); }... 10

11

Mecanismo de gestión de errores de ejecución Fragmentos de código fuente específicos para esta gestión Palabras reservadas como throw, throws, try, catch Las clases que representan excepciones heredan de java.lang.exception No deben usarse para implementar la lógica del programa, pero sí deben documentarse en los Javadoc porque son relevantes para el cliente Java Tutorials http://java.sun.com/docs/books/tutorial/essential/exceptions 12

public class RaizNoExiste extends Exception {... }; /** *... * @throws NoHayRaiz */ public class Ecuacion { public float raiz(int i) throws NoHayRaiz{.. ṫhrow new NoHayRaiz(); } }... 13

Excepciones comprobadas (checked) Representan situaciones excepcionales que se producen en un método y deben ser propagadas al que lo ha llamado El compilador obliga al método que llama a tratar dichas excepciones Excepciones no comprobadas (unchecked) Representan situaciones excepcionales que es producen en un método y que normalmente impedirán continuar con la ejecución del programa Opcionalmente podemos tratar y recuperarnos de dichas excepciones desde el método que llama Heredan de RuntimeException ArrayIndexOutOfBoundsException ArithmeticException NullPointerException ClassCastException IllegalArgumentException 14

Las excepciones se propagan de método en método en sentido contrario a las llamadas Hasta que algún catch las captura y entonces la ejecución continúa por ahí Si la excepción alcanza el método main() sin ser capturada el programa y todo el JRE se detiene, mostrando el estado de la pila de llamadas por pantalla Los métodos obligatoriamente deben declarar las excepciones comprobadas que lanzan en su cabecera Aunque conviene documentarlas todas, comprobadas y no comprobadas 15

Entorno Java (JRE) Llamadas a métodos Método main() Propagación de excepciones Primer método Enésimo método (Excepción generada aquí) 16

try { // Bloque de código en el que se puede producir una excepción } catch (TipoExcepcion1 ex1) { // Gestor de excepciones de tipo TipoExcepcion1 // Se puede seguir propagando esta u otras excepciones con throw(ex1); } catch (TipoExcepcion2 ex2) { // Gestor de excepciones de tipo TipoExcepcion2 ex2.printstacktrace(); // Imprimir por pantalla la pila de llamadas } finally { // Bloque de código que se ejecuta siempre, // se haya producido o no una excepción } 17

Las excepciones son para situaciones realmente extraordinarias (aunque posibles, claro). Todas las ordinarias deberían poder resolverse sin ellas Documentando bien aquellos casos extremos o peculiares Incluyendo toda información relevante en los objetos devueltos... Las excepciones comprobadas se usan comprometiendo al cliente a que haga algo con respecto a la situación extraordinaria ocurrida Cuanto antes detectemos la excepción y la lancemos, mejor Las excepciones no comprobadas se usan asumiendo que la culpa es del código cliente (o que ha habido un error irremediable del sistema) y por lo tanto, es posible que se produzca un fallo total de la aplicación 18

Federico Peinado www.federicopeinado.es