Nuevamente por petición de los lectores de este portal y que desean volverse más expertos en el tema de
capturar excepciones en java de manera correcta escribimos nuevamente.
Como ya se ha visto, ciertos métodos de los packages de Java y algunos métodos creados por cualquier programador
producen excepciones. Si el usuario llama a estos métodos sin tenerlo en cuenta se produce un error de compilación con un mensaje del
tipo: “… Exception java.io.IOException must be caugth or it must be declared in the throws clause of this method”. El programa no
compilará mientras el usuario no haga una de estas dos cosas:
El compilador obliga a capturar las llamadas excepciones explícitas, pero no protesta si se captura y luego no se hace nada con ella. En general, es conveniente por lo menos imprimir un mensaje indicando qué tipo de excepción se ha producido. Para el manejo de las excepciones dejamos este curso de java presencial y 100% práctico donde podrás aprender a crearlas.
Otro punto son los Bloques try y catch de los casos de 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
...
}
...
}
Un punto importante es Relanzar una Excepcion, para esto 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(). Para tener buenas bases sobre las clases, métodos y excepciones indispensables en java dejamos este curso de java donde podrás aprender y utilizar estos y otros elementos.
Diseño de paginas Web Grupo Codesi