背景
Rubyの例外処理を描いたときに状況に応じた使い分けが必要だったので、備忘録としてまとめました。
begin rescue
- エラーが発生しそうな処理に対して書く
- エラーが発生したときにエラーログなどを書ける
begin
1 / 0 // 例外を発生させる
rescue
puts "エラーが発生しました"
end
raise
- エラーを意図的に発生させる
- 1 / 0をraiseに置き換えても成立する
begin
raise
rescue
puts "エラーが発生しました"
end
retry
- エラーが発生しても再度beginの処理に戻る
- 例の場合は無限ループしてしまうので、何度か実行してエラーであれば処理を抜けるような処理を書く
begin
raise
rescue
retry // beginの処理を再度実行
end
ensure
- 正常に処理が終わってもエラーでも必ず実行される処理
begin
// 正常処理
rescue => e
// 例外処理
ensure
// とりあえず実行される
end