ループがあり、ループのどこかにある場合、例外またはエラーが発生します。ループを継続するにはどうすればよいですか?
Foos.each do |foo|
....
# Random error/exception thrown here
....
end
rescue
ループにブロックを含める必要がありますか?それでループは終了しますか?または、より良い代替手段はありますか?
ループがあり、ループのどこかにある場合、例外またはエラーが発生します。ループを継続するにはどうすればよいですか?
Foos.each do |foo|
....
# Random error/exception thrown here
....
end
rescue
ループにブロックを含める必要がありますか?それでループは終了しますか?または、より良い代替手段はありますか?
begin/rescue
ブロックの追加を使用できます。エラーが発生した場合にループを継続する他の方法があるかどうかはわかりません。
4.times do |i|
begin
raise if i == 2
puts i
rescue
puts "an error happened but I'm not done yet."
end
end
# 0
# 1
# an error happened but I'm not done yet.
# 3
#=> 4
一方、あなたのタイトルはループを終了する方法を求めているためです。
でループを終了させたい場合はrescue
、 を使用できますbreak
。
4.times do |i|
begin
raise if i == 2
puts i
rescue
puts "an error happened and I'm done."
break
end
end
# 0
# 1
# an error happened and I'm done.
#=> nil