我使用两种方法将类别同步到第三方服务。第一种方法遍历所有内容,第二种方法实际导出每个类别。如果出现故障,我该如何完全摆脱循环?
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
答案 0 :(得分:1)
你有几个选择可以摆脱循环。最简单的说,您可以在循环代码中使用break
或return
。
在上述示例的上下文中,如果可能,在应用程序的较大上下文中,可能更容易执行以下操作:
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方法中的循环中断。在这种情况下,我更喜欢我在那个级别的中断/错误处理代码。