Ruby/Rails 跳出循环内的方法

标签 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

最佳答案

您有几个选项可以打破循环。最简单的是,您可以在循环代码中使用 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 方法中的循环。在这种情况下,我更喜欢该级别的中断/错误处理代码。

关于Ruby/Rails 跳出循环内的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26120599/

相关文章:

ruby-on-rails-3 - 我在哪里可以找到好的 AREL 文档?

ruby-on-rails-3 - 数据库到 CRUD 应用程序,Rails 3

ruby-on-rails - Rails 如何更新所有记录的列为零的记录?

ruby-on-rails - 在 Rails 4 中输出特殊字符

ruby-on-rails - CSR 失败 : Error Parsing Request ASN1 bad tag value met (ASN: 267 CRYPT_E_ASN1_BADTAG)

ruby-on-rails - 在搭建脚手架时创建关系

ruby-on-rails - ActionCable 不在后台作业 rails 中运行 5

ruby-on-rails - 数组的所有变体

ruby - 使用splat捕获错误不起作用

exception-handling - Elixir:正确的打印方式__STACKTRACE__