El bloque finally {...} debe ir detrás de todos los bloques catch considerados. Si se incluye (ya que
es opcional) sus sentencias se ejecutan siempre, sea cual sea el tipo de excepción que se produzca, o
incluso si no se produce ninguna. El bloque finally se ejecuta incluso si dentro de los bloques
try/catch hay una sentencia continué, break o return. La forana general de una sección donde se
controlan las excepciones es por lo tanto:
try {
// Código
"vigilado" que puede lanzar una excepción de tipo A, B o C
} catch (A al) {
} catch (A al) {
// Se ocupa de la
excepción A
} catch (B bl) {
} catch (B bl) {
// Se ocupa de la
excepción 3
} catch (C el) {
} catch (C el) {
// Se ocupa de la
excepción C
} finally {
} finally {
// Sentencias que
se ejecutarán en cualquier caso
}
El bloque finally es necesario en los casos en que se necesite recuperar o devolver a su
situación original algunos elementos. No se trata de liberar la memoria reservada con new ya que de
ello se ocupará automáticamente el garbage collector.
Como ejemplo se podría pensar en un bloque try dentro del cual se abre un fichero para
lectura y escritura de datos y se desea cerrar el fichero abierto. El fichero abierto se debe cerrar tanto
si produce una excepción como si no se produce, ya que dejar un fichero abierto puede provocar
problemas posteriores. Para conseguir esto se deberá incluir las sentencias correspondientes a cerrar
el fichero dentro del bloque finally.
No hay comentarios:
Publicar un comentario