El ejemplo: ListOfNumbers

Las dos secciones siguientes que cubren la captura y especificación de excepciones utilizan este ejemplo:
import java.io.*;
import java.util.Vector;

class ListOfNumbers {
    private Vector victor;
    final int size = 10;

    public ListOfNumbers () {
        int i;
        victor = new Vector(size);
        for (i = 0; i < size; i++)
            victor.addElement(new Integer(i));
    }
    public void writeList() {
        PrintStream pStr = null;
        
        System.out.println("Entering try statement");
        int i;
        pStr = new PrintStream(
                  new BufferedOutputStream(
                     new FileOutputStream("OutFile.txt")));
        
        for (i = 0; i < size; i++)
            pStr.println("Value at: " + i + " = " + victor.elementAt(i));

        pStr.close();
    }
}
Este ejemplo define e implementea una clase llamada ListOfNumbers. Sobre su construcción, esta clase crea un Vector que contiene diez elementos enteros con valores secuenciales del 0 al 9. Esta clase también define un método llamado writeList() que escribe los números de la lista en un fichero llamado "OutFile.txt".

El método writeList() llama a dos métodos que pueden lanzar excepciones. Primero la siguiente línea invoca al constructor de FileOutputStream, que lanza una excepción IOException si el fichero no puede ser abierto por cualquier razón:

pStr = new PrintStream(new BufferedOutputStream(new FileOutputStream("OutFile.txt")));

Segundo, el método elementAt() de la clase Vector lanza una excpeción ArrayIndexOutOfBoundsException si se le pasa un índice cuyo valor sea demasiado pequeño (un número negativo) o demasiado grande (mayor que el número de elementos que contiene realmente el Vector). Aquí está cómo ListOfNumbers invoca a elementAt():

pStr.println("Value at: " + i + " = " + victor.elementAt(i));

Si se intenta compilar la clase ListOfNumbers, el compilador dará un mensaje de error sobre la excepción lanzada por el constructor de FileOutputStream, pero no muestra ningún error sobre la excepción lanzada por elementAt().

Esto es porque la excepción lanzada por FileOutputStream, es una escepción chequeada y la lanzada por elementAt() es una ejecución de tiempo de ejecución. Java sólo requiere que se especifiquen o capturen las excepciones chequeadas. Para más información, puedes ve Requerimientos de Java para Capturar o Especificar.

La siguiente sección, Captura y Manejo de Excepciones, le mostrará cómo escribir un manejador de excepción para el método writeList() de ListOfNumbers.

Después de esto, una sección llamada Especificar las Excepciones Lanzadas por un Método, mostrará cómo especificar que el método writeList() lanza excepciones en lugar de capturarlas.


Ozito