在Rails中抢救同一类型的多个异常

时间:2012-08-21 04:06:05

标签: ruby-on-rails ruby exception exception-handling

想象一下这个场景(只是一个样本)

file = open("/file1")
file2 = open("/file2")
file3 = open("/file3")

我如何处理这种情况,我想要做的是允许不会引发异常运行的语句,同时捕获它们可能出现的任何异常,换句话说,我有3行可以引发相同的异常,应如何处理。我可以查看消息,但是如果第一行抛出异常,则接下来的两行不会运行。

一个相关的问题是我可以拥有一个嵌套救援区块(意味着在救援区内投掷和救援一个例外吗?)

2 个答案:

答案 0 :(得分:1)

您可能需要针对此特定情况的循环:

open_files = ['file1', 'file2', 'file3'].map do |file|
  begin
    File.open file
  rescue => e
    ...
  end
end

答案 1 :(得分:0)

好吧,想通了。 不是最聪明的问题! 只需用不同的方法对它们进行调用即可。

Loadfile1()
Loadfile2()
Loadfile3()

loadfile1()
file1 = open("/file1")
rescue......
...
end