Ruby / Rails打破了循环内部的方法

时间:2014-09-30 12:13:55

标签: ruby ruby-on-rails-3 rescue

我使用两种方法将类别同步到第三方服务。第一种方法遍历所有内容,第二种方法实际导出每个类别。如果出现故障,我该如何完全摆脱循环?

def export_all
  Category.find_each do |c|
    export_category(c)
  end
end

def export_category(c)
  begin
    sync_category(c)
  rescue Exception => e
    # break out of `export_all` loop
  end
end

1 个答案:

答案 0 :(得分:1)

你有几个选择可以摆脱循环。最简单的说,您可以在循环代码中使用breakreturn

在上述示例的上下文中,如果可能,在应用程序的较大上下文中,可能更容易执行以下操作:

def export_all
  Category.find_each do |c|
    begin 
      export_category(c)
    rescue SpecificErrorIsBetterThanGenericExceptionIfPossible => e
      break
    end
  end
end

def export_category(c)
  sync_category(c)
end

从您的问题中可以看出,当遇到异常时,您希望export_all方法中的循环中断。在这种情况下,我更喜欢我在那个级别的中断/错误处理代码。