Captura de excepciones

La estructura de captura de excepciones es try-catch-finally.

try{
        //sentencias
    }catch(ClaseException e){
        //sentencias
    }finally{
        //sentencias
    }

En la estructura try-catch-finally, la parte catch puede repetirse tantas veces como excepciones diferentes se deseen capturar. La parte finally es opcional y sólo puede aparecer una vez. Para ver como funciona esta estructura en el siguiente ejemplo se presenta un programa que pide al usuario un numero entre 1 y 10, con manejo de excepciones (tranquilos y tranquilas si véis cosas que no entendéis. Todo se verá).

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PedirNumero {

    public static void main(String[] args) {
        int numero = -1;
        int intentos = 0;
        String linea;

        BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

        do {
            try {
                System.out.println(“Introduzca un numero entre 1 y 10”);
                linea = teclado.readLine();
                numero = Integer.parseInt(linea);
            } catch (IOException ex) {
                System.out.println(“Error al leer del teclado”);

            } catch (NumberFormatException f) {
                System.out.println(“Debes introducir un numero entre 1 y 10”);
            } finally {
                intentos++;
            }
        } while (numero <= 0 || numero > 10);
        System.out.println(“El numero es: ” + numero);
        System.out.println(“Intentos: ” + intentos);
    }

}

En este programa se pide repetidamente un número una estructura do-while, mientras el número sea menor o igual que cero o mayor que 10. El método readLine() de la clase BufferedReader puede lanzar la excepción IOException. Si no se hace nada con ella, cuando se produce termina el programa. Así mismo, la llamada al método parseInt() puede lanzar la excepción NumberFormatException. Esta excepción se lanza cuando parseInt() no puede convertir el texto en un número entero.

Cuando se produce una excepción se compara si coincide con la excepción del primer catch. Si no coincide se compara con la excepción del segundo catch, y así sucesivamente. Cuando se encuentra un catch cuya excepción coincide con la que hemos lanzado, se ejecuta el bloque de sentencias de ese catch.

El bloque finally se ejecuta tanto si try terminó normalmente como si capturó una excepción en algún bloque catch. Es decir, el bloque finally se ejecuta siempre.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s