Relanzar una Exception
Existen algunos casos en los cuales el código de un método puede generar una Exception y no se desea incluir en dicho método la gestión del error. Java permite que este método pase o relance (throws) la Exception al método desde el que ha sido llamado, sin incluir en el método los bucles try/catch correspondientes.
Esto se consigue mediante la adición de throws más el nombre de la Exception concreta después de la lista de argumentos del método. A su vez el método superior deberá incluir los bloques try/catch o volver a pasar la Exception. De esta forma se puede ir pasando la Exception de un método a otro hasta llegar al último método del programa, el método main().
El ejemplo anterior (metodo1) realizaba la gestión de las excepciones dentro del propio método. Ahora se presenta un nuevo ejemplo (metodo2) que relanza las excepciones al siguiente método:
void metodo2() throws IOException, MyException {
…
// Código que puede lanzar las excepciones IOException y MyException
…
} // Fin del metodo2
Según lo anterior, si un método llama a otros métodos que pueden lanzar excepciones (por ejemplo de un package de Java), tiene 2 posibilidades:
1. Capturar las posibles excepciones y gestionarlas.
2. Desentenderse de las excepciones y remitirlas hacia otro método anterior en el stack para éste se encargue de gestionarlas.
Si no hace ninguna de las dos cosas anteriores el compilador da un error, salvo que se trate de una RuntimeException.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra