我有一个不可避免间歇性的存取对象。有时,当它尝试操作时,其内部崩溃并需要在重新尝试操作之前重新启动。
编写像:
这样的函数很容易def might_break
try_something_that_might_break
rescue
fix_it
might_break
end
当然,使用计数器可以避免无限的破损。
但我想保持干燥,我的每个访问者方法都需要非常相同的照顾。
我考虑过制作一个带有块的函数safely
,但后来我不确定如何将它返回到父函数。
提前致谢!
答案 0 :(得分:1)
你的意思是这样吗?
def safely num, &block
count = 0
begin
block.call
rescue
count += 1
retry if count < num
end
end
使用safely(5) {your_broken_method}