2

我有一个使用 savon 作为 gem 与 SOAP API 对话的类。并且有时服务器无法访问,因此实现soap方法的方法会抛出一个Timeout::Error. 实施这样的救援不是问题:

begin 
  ...
rescue Timeour::Error 
  ...
end

但是我定义了大约 50 种可能会受到影响的方法,我不想重复相同的代码 50 次。那绝对不干。有没有办法解决这个问题?我已经想过这样的事情:

def safe_call method, params
  begin
    self.send method, params
  rescue Timeour::Error
    # do sth heroic to rescue the method
  end
end

但这很糟糕,因为我必须更改使用该类的所有脚本中的每个调用。有没有办法进行全班救援?

4

1 回答 1

3

我认为您可以使用rescue_from。你可以在这里阅读:http: //api.rubyonrails.org/classes/ActiveSupport/Rescuable/ClassMethods.html

简而言之,你可以把它放在你的应用程序控制器中:

rescue_from 'Timeout::Error' do |exception|
  # Rescue logic here.
end
于 2012-04-30T16:38:49.487 回答