









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
En este documento se comparan dos métodos para manejar errores al leer archivos: el método clásico y el manejo de excepciones. El método clásico utiliza códigos de error y se basa en la secuencia de ejecución, mientras que el manejo de excepciones permite una respuesta más específica y flexible a errores inesperados. El documento incluye ejemplos de código en java y explica el funcionamiento de métodos como try-catch y finally.
Tipo: Apuntes
1 / 17
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










1
Introd. a la POO El lenguaje Java Estruct. Biblioteca Excepciones Colecciones Entrada y salida GUIs
Índice
2
3
leerFichero() { abrir el fichero; determinar la longitud del fichero; reservar la memoria suficiente; copiar el fichero en memoria; cerrar el fichero; }
4
tipoDeCódigoDeError leerFichero { tipoDeCódigoDeError códigoDeError = 0; abrir el fichero; if (el fichero está abierto) { determinar la longitud del fichero; if (se consigue la longitud del fichero) { reservar la memoria suficiente; if (se consigue la memoria) { copiar el fichero en memoria; if (falla la lectura) { códigoDeError = -1; } } else { códigoDeError = -2; } } else { códigoDeError = -3; } cerrar el fichero; if (el fichero no se cerró && códigoDeError == 0){ códigoDeError = -4; } else { códigoDeError = códigoDeError and –4; } } else { códigoDeError = -5; } return códigoDeError ; }
7
método1 { … call método2; … } método2 { … call método3; … }
método3 { … call leerFichero; … }
método1 { try { … call método2; … } catch (excepción) { procesar error; } }
método2 throws excepción { … call método3; … } método3 throws excepción { … call leerFichero; … }
método1 { … tipoDeCódigoDeError códigoDeError; códigoDeError = call método2; if (códigoDeError != 0) procesar error; else … } tipoDeCódigoDeError método2 { … tipoDeCódigoDeError códigoDeError; códigoDeError = call método3; if (códigoDeError != 0) return códigoDeError; else … }
tipoDeCódigoDeError método3 { … tipoDeCódigoDeError códigoDeError; códigoDeError = call leerFichero; if (códigoDeError != 0) return códigoDeError; else … }
con excepciones
Tratamiento clásico
8
import java.io.*;
public class ListaDeNúmeros { private int[] v; private static final int SIZE = 10;
public ListaDeNúmeros() { v = new int[SIZE]; for (int i = 0; i < SIZE; i++) { v[i] = i; } }
public void escribeLista() { PrintWriter out = new PrintWriter( new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: “ + i + “ = “ + v[i]); } out.close(); } }
9
try { ... } catch ( TipoDeExcepción nombre ) { ... } catch ( TipoDeExcepción nombre ) { ... } ...
10
public void escribeLista() { PrintWriter out = null; try { out = new PrintWriter(new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } out.close(); } catch (ArrayIndexOutOfBoundsException e) { System.err.println(“Índice fuera de rango”); } catch (IOException e) { System.err.println(“Error al abrir o cerrar out.txt"); } }
13
public void escribeLista() { PrintWriter out = null; try { out = new PrintWriter(new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.err.println(“Índice fuera de rango”); } catch (IOException e) { System.err.println(“out.txt no puede abrirse"); } finally { if (out != null) { out.close(); } } }
14
public void escribeLista() { PrintWriter out = null; try { out = new PrintWriter(new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.err.println(“Índice fuera de rango”); } catch (IOException e) { System.err.println(“out.txt no pude abrirse"); } finally { if (out != null) { out.close(); } } }
15
public void escribeLista() { PrintWriter out = null; try { out = new PrintWriter(new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.err.println(“Índice fuera de rango”); } catch (IOException e) { System.err.println(“out.txt no pude abrirse"); } finally { if (out != null) { out.close(); } } }
16
public void división(int num1, int num2) { System.out.println( num1 + " / " + num2 + " = " + (num1 / num2)); System.out.println("Volviendo de división."); }
public static void main(String[] args) { new DivisiónPorCero().división(10, 0); System.out.println("Volviendo de main."); } }
Salida: java.lang.ArithmeticException: / by zero at DivisiónPorCero.división(DivisiónPorCero.java:4) at DivisiónPorCero.main(DivisiónPorCero.java:9) Exception in thread "main"
19
public void escribeLista() throws IOException, ArrayIndexOutOfBoundsException { PrintWriter out = new PrintWriter( new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } out.close(); }
20
21
22
public void pop() throws EmptyStackException { if (size == 0) { throw new EmptyStackException(); } setObjectAt(size - 1, null); size--; }
25
26
public class Ejemplo { void aux() { try { int a[] = new int[2]; a[4] = 0; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("excepción: " + e.getMessage()); e.printStackTrace(); } } public static void main(String[] args) { new Ejemplo().aux(); } } Salida: excepción: null java.lang.ArrayIndexOutOfBoundsException at Ejemplo.aux(Ejemplo.java:5) at Ejemplo.main(Ejemplo.java:13)
27
Definiendo nuestras propias excepciones
class MiExcepción extends Exception { MiExcepción(int i) { super(Integer.toString(i)); } }
throw new MiExcepción(5); ...
28
Ejemplo: La excepción de división por
cero
class ExcepciónDeDivisiónPorCero extends Exception { ExcepciónDeDivisiónPorCero() { super(); }
ExcepciónDeDivisiónPorCero(String msg) { super(msg); } }
31
package pilas; import java.util.*; public class PilaEstática
32
import pilas.; import java.util.;
public class TestPilas { public static void main(String args []) { Pila
for (int i = 0; i < 5; i++) { p.añadir(gna.nextInt(100)); }
// supongamos que queremos borrar todos los números // menores que 80 y 90 de la cima de la pila
try { while (p.cima() < 80) { p.eliminar(); } } catch (PilaException e) { System.out.println ("Error: " + e.getMessage()); }
while (!p.esVacía() && p.cima() < 90) { p.eliminar(); } } }
Uso no recomendado
33
Reglas para tratar situaciones excepcionales
public void actionPerformed(ActionEvent e) { String comando = e.getActionCommand(); if (comando.equals("NÚMERO INTRODUCIDO")) { String txt = aNumericTextField.getText(); try { ... int i = Integer.parseInt(txt); ... } catch (NumberFormatException nfe) { aMessageTextField.setText("Introduzca un entero"); } } else { ... } ...