エラー処理応用レベル
Ruby の begin/rescue/ensure において ensure ブロックが実行されるのはいつですか?
- 1例外が発生したときのみ
- 2例外が発生しなかったときのみ
- 3例外の有無にかかわらず常に
- 4rescue で捕捉できなかったときのみ
解説
ensure は例外の有無にかかわらず必ず実行されます。ファイルのクローズや DB 接続の解放など、後処理を保証したいときに使います。return や next で途中終了した場合でも ensure は実行されます。