【问题标题】:How to define a class wide rescue method for Timeout::error?如何为 Timeout::error 定义类范围的救援方法?
【发布时间】:2012-05-10 08:30:54
【问题描述】:

我有一个使用 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

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

【问题讨论】:

  • 你想从那个错误中恢复,还是直接忽略它?

标签: ruby-on-rails ruby timeout savon


【解决方案1】:

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

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

rescue_from 'Timeout::Error' do |exception|
  # Rescue logic here.
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2021-10-24
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多