error中級

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

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

解説

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