Java - try .. catch .. finally

try .. catch .. finally

try ブロックの中で例外が発生した場合、catch ブロックに処理が移るため、それ以降の処理は実行されません。つまり、try ブロックの処理はすべて実行される保証はありません。そのため、try 文を終了する前に必ず実行させたい処理がある場合、finally を使用します。例外処理については、try .. catchを参照してください。

try{
  ...
} catch (例外クラス 変数名) {
  ...
} finally {
  ...
}
try .. catch .. finally

finally ブロックに記述された処理は、try 文において例外の発生有無にかかわらず必ず実行されます。

int n[] = {1, 2, 3};

try{
  for (int i = 0; i < 4; i++){
    System.out.println(n[i]);
  }
} catch(ArrayIndexOutOfBoundsException e) {
  System.out.println("インデックスの範囲を超えています");
} finally {
  System.out.println("処理を終了します");
}
try .. catch .. finally

finally ブロックは catch ブロックの中で return 文などが実行された場合でも必ず実行されます。ただし、System.exit(0) によってプログラム自体を終了した場合を除きます。

関連記事