A continuación, para aprender a utilizar las excepciones, vamos a ver un ejemplo en el que como se puede ver en el siguiente código, se genera un vector de 100 elementos con valores aleatorios y posteriormente, se almacenan los valores en el fichero Salida.txt
.
EscribirNumeros.java
// Nota: Este código no funciona. Es simplemente para uso educativo
import java.io.*;
import java.util.Vector;
import java.util.Random;
class EscribirNumeros {
private Vector<Integer> numeros;
private static final int SIZE = 100;
public EscribirNumeros (){
// Generamos el vector con números aleatorios
numeros = new Vector<Integer>(SIZE);
Random randomGenerator = new Random();
for (int i = 0; i < SIZE; i++){
Integer num=randomGenerator.nextInt(100);
numeros.addElement(new Integer(num));
}
// Guardamos el vector en un fichero
PrintWriter out = null;
System.out.println("Entrando a la zona Try");
out = new PrintWriter(new FileWriter("Salida.txt"));
for (int i = 0; i < SIZE; i++)
out.println("Valor de: " + i + " = " + numeros.elementAt(i));
out.close();
}
public static void main( String[] arg ) {
new EscribirNumeros ();
}
}
En la primera parte del código, donde se generan los valores aleatorios no se puede producir ningún tipo de excepción. Pero a la hora de guardar los valores en el fichero, es posible que no se pueda abrir el fichero y se produzca una excepción de entrada/salida (IOException
). Otro posible fallo es al ejecutar la sentencia
numeros.elementAt(i)
es que el número de elemento solicitado (i) esté fuera del rango del vector (que es de 0 a 99). En el caso de intentar obtener un elemento que se encuentre fuera del vector se genera la excepción IndexOutOfBoundsException
.
En el siguiente código vamos a tratar las dos excepciones comentadas para permitir que el código siempre se ejecute de una forma segura.
EscribirNumeros.java
import java.io.*;
import java.util.Vector;
import java.util.Random;
class EscribirNumeros {
private Vector<Integer> numeros;
private static final int SIZE = 100;
public EscribirNumeros (){
// Generamos el vector con números aleatorios
numeros = new Vector<Integer>(SIZE);
Random randomGenerator = new Random();
for (int i = 0; i < SIZE; i++){
Integer num=randomGenerator.nextInt(100);
numeros.addElement(new Integer(num));
}
// Guardamos el vector en un fichero
PrintWriter out = null;
try {
System.out.println("Entrando a la zona Try");
out = new PrintWriter(new FileWriter("Salida.txt"));
for (int i = 0; i < SIZE; i++)
out.println("Valor de: " + i + " = " + numeros.elementAt(i));
} catch (ArrayIndexOutOfBoundsException e) {
System.err.println("Caught ArrayIndexOutOfBoundsException: " +e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
} finally {
if (out != null) {
System.out.println("Cerrando el fichero");
out.close();
} else {
System.out.println("NO se ha abierto el fichero");
}
}
}
public static void main( String[] arg ) {
new EscribirNumeros ();
}