Обработка различных классов ошибок 404 - PullRequest
1 голос
/ 07 февраля 2012

У меня есть много классов, наследующих класс 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 страница не найдена исключение и завершить объект страницы. В настоящее время моя реализация недостаточно детализирована, чтобы сделать это. Разные исключения по-разному определяют тип HTTP-статуса.

В моем случае выше, как лучше всего определить код (например, 404) из различных реализаций ошибок HTTP? Я использую множественное спасение или у меня много операторов if в спасении?

1 Ответ

2 голосов
/ 07 февраля 2012

Наверное, проще всего поймать все и посмотреть сообщение:

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
...