Bloques try y catch
En el caso de las excepciones que no pertenecen a las RuntimeException y que por lo tanto Java obliga a tenerlas en cuenta habrá que utilizar los bloques try, catch y finally. El código dentro del bloque try está “vigilado”: Si se produce una situación anormal y se lanza por lo tanto una excepción el control salta o sale del bloque try y pasa al bloque catch, que se hace cargo de la situación y decide lo que hay que hacer. Se pueden incluir tantos bloques catch como sean necesarios, cada uno de los cuales tratará un tipo de excepción.
Las excepciones se pueden capturar individualmente o en grupo, por medio de una superclase de la que deriven todas ellas.
El bloque finally es opcional. Si se incluye sus sentencias se ejecutan siempre, sea cual sea la excepción que se produzca o si no se produce ninguna. El bloque finally se ejecuta aunque en el bloque try haya un return.
En el siguiente ejemplo se presenta un método que debe «controlar» una IOException relacionada con la lectura ficheros y una MyException propia:
void metodo1(){
…
try {
// Código que puede lanzar las excepciones IOException y MyException
} catch (IOException e1) {// Se ocupa de IOException simplemente dando aviso System.out.println(e1.getMessage());
} catch (MyException e2) {
// Se ocupa de MyException dando un aviso y finalizando la función System.out.println(e2.getMessage()); return;
} finally { // Sentencias que se ejecutarán en cualquier caso
…
}
…
} // Fin del metodo1
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra