Tratamiento de excepciones

El bloque try – catch – finally

El bloque try – catch – finally sirve para controlar la ejecución de código de forma que, si se produce una excepción, ésta se puede tratar de forma controlada y no se aborta la ejecución del programa.

El formato de este bloque es el siguiente:
try {

Instrucciones que se pretenden ejecutar
(si se produce una excepción puede que no se ejecuten todas ellas)

} catch (Exception e) {

Instrucciones que se van a ejecutar cuando se produce una excepción

} finally {

Instrucciones que se van ejecutar, tanto si se producen excepciones como si no.

}

El bloque finally es opcional.

Ejemplo:

public class Programa {

    public static void main (String [] args)     {

        try {

            System.out.println("Intentamos ejecutar el bloque de instrucciones:");
            System.out.println("Instrucción 1.");
            int n = Integer.parseInt("M"); //error forzado en tiempo de ejecución.
            System.out.println("Instrucción 2.");
            System.out.println("Instrucción 3, etc.");

        } catch (Exception e) {

            System.out.println("Instrucciones a ejecutar cuando se produce un error");

        } finally {

            System.out.println("Instrucciones a ejecutar finalmente tanto si se producen errores como si no.");

        }

    }
}

¿Cómo tratar la excepción que se puede producir al leer un número entero por teclado?

Class Scanner

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * Clase para entender la captura de excepciones.
 * 
 */
public class EjemploExcepcion {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in) ;
        int numero;
        
        System.out.println("Escriba un número entero: ");
        try {
            numero = teclado.nextInt();
            System.out.println("El número tecleado es: " + numero);
        } catch (NumberFormatException ex1) {
            System.err.println("Error: no es un número entero válido, " + ex1.getMessage());
        } catch (InputMismatchException ex2) {
            System.err.println("Error: formato no válido, " + ex2.getMessage());
        } finally {
            System.out.println("Fin");
        }
    }    
}

Más información:

Tratamiento de errores

Manejar excepciones en Java

Deja un comentario