我有很多继承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对象。目前我的实现并不足以做到这一点。不同的异常有不同的方式来告诉它是什么类型的HTTP状态。
在上面的例子中,从各种HTTP错误实现中确定代码(例如404)的最佳方法是什么?我是否使用多次救援,或者我在救援中有很多if语句?
答案 0 :(得分:2)
可能最简单的方法是抓住所有内容并查看消息:
def update_ended
fetch_page(...)
rescue Exception => e
case e.message
when /404/ then puts '404!'
when /500/ then puts '500!'
else puts 'IDK!'
end
end