1

Page クラスを継承する多くのクラスがあります。update_endedこれらは、ページが終了したときにステータスを更新しようとする同じメソッドを共有しています。

これらの Page クラスはさまざまな問題に直面しているため、OpenURI、Net::HTTP、Mechanize など、さまざまな net/http エージェントが混在して使用されます。

  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 ステートメントを使用しますか?

4

1 に答える 1

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
于 2012-02-07T08:37:27.853 に答える