ruby - 编写 'If it doesn' t 工作的正确方法,修复它并在 Ruby 中重试'函数

标签 ruby design-patterns accessor rescue

我有一个访问器对象,它不可避免地是间歇性的。有时当它尝试一个 Action 时,它的内部崩溃并且需要在重新尝试 Action 之前重新启动。

写一个函数很容易:

def might_break
    try_something_that_might_break
rescue
    fix_it
    might_break
end

当然,有一个计数器可以避免无限损坏。

但我想让事情保持干燥,我的每一个访问器方法都需要几乎相同的照顾。

我考虑过安全地创建一个函数,它接受一个 block ,但我不确定如何让它返回父函数。

提前致谢!

最佳答案

你的意思是这样的吗?

def safely num, &block
  count = 0
  begin
    block.call
  rescue
    count += 1
    retry if count < num
  end
end

使用 safely(5) {your_broken_method} 调用它

关于ruby - 编写 'If it doesn' t 工作的正确方法,修复它并在 Ruby 中重试'函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972311/

相关文章:

ruby-on-rails - 具有管理 namespace 的 Rails 3 中的 I18n

java - 需要初始化对象时使用的设计模式?

ruby - Ruby 递归 lambda 调用的问题

ruby - 使用 ruby​​-libvirt 扩展编译 Mountain Lion 时出现问题

java - 在 Java 中使用枚举用动物对象填充动物园对象

design-patterns - 设计模式及其用途的最佳资源是什么?

C++ : alternative for Vector of references to avoid copying large data

Ruby 私有(private)和公共(public)访问器

c# - 在类中使用访问器是不好的做法吗?

html - 在 ruby​​ on rails if 语句中使用 html 标签