ruby中的retry和redo

# retry用于处理异常中的begin/end代码块中,如果发生异常会重新运行 begin 和 rescue 之间的代码
#当retry 被调用的话,begin 和 rescue 之间所有的代码都会被重新跑一次,并不会只跑片段代码或只跑发生异常的代码
(0..5).each do |i|
begin
puts i
raise 'error' if i ==2
rescue
puts "error i=100"
i=100
retry
end
end

# output result

0
1
2
error i=100
100 # 这里打印捕获语句里的,赋值100的i
3 # 这里打印传递进来的i
4
5



# redo 迭代器(each)或for循环,条件满足,则以当前的条件重复一次{ block}的动作,不检查循环条件
#下面代码重复打印Value: 3
(0..5).each do |i|
puts "Value: #{i}"
redo if i > 2
end
原文地址:https://www.cnblogs.com/or2-/p/6322557.html