エラー処理応用レベル

Ruby の begin/rescue/ensure において ensure ブロックが実行されるのはいつですか?

  • 1例外が発生したときのみ
  • 2例外が発生しなかったときのみ
  • 3例外の有無にかかわらず常に
  • 4rescue で捕捉できなかったときのみ

解説

ensure は例外の有無にかかわらず必ず実行されます。ファイルのクローズや DB 接続の解放など、後処理を保証したいときに使います。returnnext で途中終了した場合でも ensure は実行されます。

問題一覧へ戻る