






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Universidad Nacional Experimental del Táchira. Apuntes de Ingeniería Infórmatica. Excepciones en Java; Captura de excepciones, Relanzamiento de excecpciones; Creacion de una excepcion; Herencia de excepciones
Tipo: Apuntes
1 / 11
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







Agenda
1 Excepciones 1 1.1 Introduccion............................... 1 1.2 Excepciones en Java.......................... 1 1.3 Captura de excepciones........................ 2 1.4 Relanzamiento de excecpciones.................... 2 1.5 Creacion de una excepcion....................... 3 1.6 Herencia de excepciones........................ 3 1.7 Sumario................................. 4
2 Entrada y Salida en Java 4 2.1 InputStream............................... 5 2.2 OutputStream............................. 5 2.3 Filters.................................. 5 2.3.1 FilterInputStreams....................... 6 2.3.2 FilterOutputStreams...................... 6 2.3.3 RandomAccessFile....................... 6 2.4 Ejemplo................................. 6 2.5 Nuevos Streams version 1.1...................... 7 2.6 Serializacion............................... 7
3 Threads 7
Introducci´on
Clases para el manejo de excepciones en Java
Lanzamiento de excepciones
... //Lanza la excepcion MyException una vez detectado el error MyException me = new MyException(’’MyException Message’’); throw me; ...
Captura de excepciones
public void leeFichero(String _f) throws EOFException, FilenotfoundException { ... }
public void leeFichero(String _f) throws IOException { ... }
Captura de excepciones
... // Lanza la excepcion MyException una vez detectado el error void metodo1(){ ... try { //Las excepciones IOException y MyException } catch (IOException e1) { System.out.println(e1.getMessage()); } catch (MyException e2) { System.out.println(e2.getMessage()); return; } finally { Sentencias que se ejecutar\’an siempre, e.g. ocurra o no la excepcion } }
Class MiClase { public produceExcepcion() throws MyExcepcion, IOException{ ... }
Class MiClase2 extends MiClase { public produceExcepcion() throws MyExcepcion { ... }
// Forma NO VALIDA Class MiClase2 extends MiClase { public produceExcepcion() throws MyExcepcion, IOException, MyExcepcion2 { ... }
Ejemplo ver ejemplo Relanzar.java
Sumario Si un m´etodo llama a otros m´etodos que pueden lanzar excepciones:
I/O. Entrada y Salida de datos Streams o flujos de datos:
I/O. Entrada y Salida de datos Diferentes tipos de I/O
I/O. Entrada y Salida de datos Caracteristicas
I/O. Entrada y Salida de datos InputStream
OutputStream
Usaremos ”decoradores” para a˜nadir funcionalidad
InputStream Tipos
OutputStream Tipos
2.3.3 RandomAccessFile
RandomAccessFile No forma parte de la jerarqua de clases de InputStream y OuputStream.
Ejemplo Ver archivo IOStreamDemo.java
Streams v1.
Diagrama de clases de los Streams v1.
Figure 1: Threads
Serializacion
Serializacion. Ejemplo
//Escribiendo un objeto ObjectOutput out = new ObjectOutputStream (new FileOutputStream ("object.x")); Rectangulo r = new Rectangulo(); out.writeObject(r);
// Leyendo un objeto ObjectInput in = new ObjectInputStream (new FileInputStream ("object.x")); Rectangulo r = (Rectangulo)in.readObject();
Proceso
Thread o hebra o hilo
ver 1 Los procesadores y los SO modernos permiten la ejecucion de multiples tareas, e.g., la realizacion de dos o mas actividades de forma simultanea, mediante el concepto de timesharing
class TRunnable extends Applet implements Runnable{ private Thread hebra == null; public void start(){ if(hebra == null){ hebra = new Thread(this); hebra.start(); //start() llama a run() } } }
El argumento this hace referencia al objeto cuyo metodo run() debe ser llamado cuando la hebra ejecutada es un objeto de TRunnable Una hebra puede realizar cualquier tarea de un programa normal y corriente. Basta con programar las tareas correspondientes en el metodo run() La eleccion de derivar Thread o implementar Runnable
Creando una hebra Cuando se crea una hebra o hilo, este debe estar limitado permanentemente en un objeto con un metodo run(). Cuando se inicia una hebra, se invocara el metodo run() del objeto. Otra forma mas sofisticada consiste en la implementacion de la interfaz Runnable. Hay dos formas de crear un hilo: La primera es declarar una clase que extienda a Thread. Cuando la clase es instanciada, el hilo y el objeto son creados juntos y el objeto es automaticamente limitado al hilo. Se llama al metodo start() del objeto e inmediatamente se llama a al metodo run().
// This class extends Thread class BasicThread1 extends Thread { // This method is called when the thread runs public void run() { } }
// Create and start the thread Thread thread = new BasicThread1(); thread.start();
La segunda forma es crear un hilo y alimentarlo con un objeto con el metodo run(). Este objeto debera estar asociado permanentemente con el hilo. El objeto con el metodo run() sera invocado cuando el hilo sea inicializado. Este metodo de creacion de hilos es muy util cuando se desea que muchos hilos compartan un objeto.
class BasicThread2 implements Runnable { // This method is called when the thread runs public void run() { } } // Create the object with the run() method Runnable runnable = new BasicThread2();
// Create the thread supplying it with the runnable object Thread thread = new Thread(runnable);
// Start the thread thread.start();
Deteniendo una hebra La forma apropiada para detener el hilo que esta corriendo el hilo consiste en configurar una variable que cheque ocasionalmente el hilo. Nota: Thread.suspend() y Thread.stop() proporciona metodos asincronos para detenr el hilo. Sin embargo, estos metodos han sido descontinuados por se inseguros. Usarlos frecuentemente resulta en deadlocks e incorrecta limpieza de los recursos.
// Create and start the thread MyThread thread = new MyThread(); thread.start();
// Do work...
// Stop the thread thread.allDone = true;
class MyThread extends Thread { boolean allDone = false;
// This method is called when the thread runs public void run() { while (true) { // Do work... if (allDone) { return; } // Do work... } } }
Determinando cuando finaliza un hilo
// Create and start a thread Thread thread = new MyThread(); thread.start(); // Check if the thread has finished in a non-blocking way if (thread.isAlive()) { // Thread has not finished } else { // Finished } // Wait for the thread to finish but don’t wait longer than a // specified time long delayMillis = 5000; // 5 seconds try { thread.join(delayMillis); if (thread.isAlive()) { // Timeout occurred; thread has not finished } else { // Finished } } catch (InterruptedException e) { // Thread was interrupted } // Wait indefinitely for the thread to finish try { thread.join(); // Finished } catch (InterruptedException e) { // Thread was interrupted }
Deteniendo temporalmente una hebra Este ejemplo demuestra como una hebra puede detenerse temporalmente
try { // 5 seconds long numMillisecondsToSleep = 5000; Thread.sleep(numMillisecondsToSleep); } catch (InterruptedException e) { }
Ciclo de vida de una hebra
Ejemplo Ver programa Consumer-Producer...