Professional Documents
Culture Documents
Instrucción TRY-CATCH
Mediante ésta instrucción podremos capturar las excepciones que se generen
entre sus llaves. Veamos que estructura seguiría la declaración de un try-catch:
1
try {
2 // BLOQUE DE CÓDIGO.
3 // - Los errores ocurridos aquí pueden ser capturados.
4 } catch (TipoExcepcion nombreObjeto){
5 // Código a ejecutar si ocurre un error y lanza una excepción TipoExcepcion.
6 } catch (TipoExcepcion2 nombreObjeto2){
// Código a ejecutar si ocurre un error y lanza una excepción TipoExcepcion2.
7 }
8
Se puede observar que primero escribimos try y abrimos unas llaves. El código
situado entre esas llaves es el que el programa ejecutará con normalidad
y cualquier error ocurrido en su interior podrá ser controlado. Por otra parte, el
código que pongamos dentro de las llaves de catch solo será ejecutado si se
lanza un error del tipo indicado entre los paréntesis.
Recordemos que cuando ocurre un error, nuestro programa devuelve un objeto
correspondiente a una excepción con un tipo particular que dependerá del tipo
de error generado. Lo que nosotros controlamos mediante catch es el tipo de
excepción generada y que hacer en cada caso particular.
Veamos un ejemplo práctico:
01
02 int lista[] = new int[3];
03
try {
04 System.out.println("Hola");
05 num[5] = 10;
06 System.out.println("Adios");
07 } catch (ArrayIndexOutOfBoundsException ex) {
System.out.println("Error: Posicion no valida.");
08 }
09
10 System.out.println("Fin del programa");
11
Observemos qué ocurre aquí:
Sentencia FINALLY
En casos particulares, quizás nos interesa ejecutar un bloque de código después
del CATCH en caso de que se produzca un error durante la ejecución de nuestro
programa. Aunque a priori pueda resultar poco útil, puede llegar a ser necesario
para programas más complejos donde por ejemplo, es necesario cerrar una
conexión en caso de que se produzca un error.
¿Qué hace exactamente la intrucción FINALLY? En el caso de que se produzca
un error, ejecutará un bloque de código después de que haya sido capturado por
CATCH.
Pongamos un ejemplo:
1
try {
2 // BLOQUE DE CÓDIGO.
3 } catch (Exception ex){
4 System.out.println("Ha ocurrido un error.");
5 } finally {
6 System.out.println("Excepcion capturada");
}
7
8 System.out.println("Adios.");
9
Veamos cómo se comporta el programa en el caso de que SI ocurra un error:
Sentencia THROWS
El programador también puede decidir si quiere lanzar una excepción si se
genera una determinada situación en su código, en vez de que sea su programa
el que lo haga. Es importante que siempre debemos indicar el tipo de excepción
que queremos lanzar. Para poder hacerlo, utilizaremos una sentencia
denominada THROW, que nos permitirá lanzar a nosotros mismos una
excepción.
Veamos un código para comprenderlo mejor:
1
int numero1 = 5;
2 int numero2 = 0;
3 try {
4 if (numero2 == 0) throws new ArithmeticException();
5 } catch (ArithmeticException ex){
6 System.out.println("Ha ocurrido un error.");
}
7
8 System.out.println("Adios.");
9
Lo que está ocurriendo es que throw está creando un objeto del tipo
ArithmeticException y lo está lanzando. Es exactamente igual a cuando el
programa lanza una excepción, es decir, un objeto del tipo de excepción
correspondiente, con la diferencia de que en este caso la excepción la lanzamos
nosotros y lanzamos el objeto correspondiente.
¿Sabrías decir de que tipo será la excepción en el código anterior? Si nos
fijamos, estamos lanzando una excepción del tipo ArithmeticException.
Lista de excepciones
Mostramos a continuación una tabla con todas las excepciones que podemos
encontrar en Java. Es interesante saber que muchas de ellas, el mismo lenguaje
nos obligará a encerrarlas en un bloque TRY-CATCH para garantizar el buen
funcionamiento del programa.
EXCEPCIÓN SIGNIFICADO