【发布时间】:2012-02-28 15:55:20
【问题描述】:
我有很多类继承了 Page 类。它们共享相同的 update_ended 方法,该方法尝试在页面结束时更新状态。
由于这些 Page 类面临不同的问题,因此混合使用了不同的 net/http 代理,包括 OpenURI、Net::HTTP 和 Mechanize。
def update_ended
fetch_page(...)
rescue OpenURI::HTTPError, Net::HTTPNotFound, Mechanize::ResponseCodeError
self.ended = true
...
self.save!
end
我想捕捉 404 page not found 异常并结束一个 Page 对象。目前我的实现还不够细,无法做到这一点。不同的异常有不同的方式来判断它是哪种 HTTP 状态。
在我上面的例子中,从各种 HTTP 错误实现中确定代码(例如 404)的最佳方法是什么?我是使用多个救援还是救援中有很多 if 语句?
【问题讨论】:
标签: ruby-on-rails ruby exception-handling mechanize open-uri