如果我有一个循环,并且在循环中的某个地方,我会得到一个异常或错误。我如何保持循环继续?
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