Método finally
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 continue, break o return. La forma 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 a1) {
// Se ocupa de la excepción A } catch (B b1) {
// Se ocupa de la excepción B } catch (C c1) {
// Se ocupa de la excepción C } 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.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra