Was ist der beste Weg, um behandeln Sie Ausnahmen von Net::HTTP?

Was ist der beste Weg, um zu retten, Ausnahmen von Net::HTTP?

Ausnahmen sind beschrieben in Ruby ' s socket.c wie Errno::ETIMEDOUT, Errno::ECONNRESET, und Errno::ECONNREFUSED. Die Basisklasse für alle diese ist SystemCallError, aber es fühlt sich komisch an, schreiben Sie code wie den folgenden, weil SystemCallError scheint so weit entfernt, eine HTTP nennen:

begin
  response = Net::HTTP.get_response(uri)
  response.code == "200"
rescue SystemCallError
  false
end

Ist es nur mir so? Gibt es eine bessere Art das zu handhaben, über die Festsetzung Net::HTTP zu handhaben, die Errno Ausnahmen, die wahrscheinlich pop-up, und Kapseln Sie in einer übergeordneten HttpRequestException?

Vielen Dank an alle! Ich landete Verpackung, die Antworten in der form von ein Ruby-Gem, die ich in der Zukunft nutzen können, um mit dieser situation umzugehen: net_http_exception_fix [github.com/edward/net_http_exception_fix]
Korrekte link: github.com/edward/net_http_exception_fix (Edward ' s Kommentar schlürft eine zusätzliche "]" in der URL).
Ich habe geschrieben, andere Bibliothek, löst das gleiche problem in einer anderen Weise: github.com/barsoom/net_http_timeout_errors
Cool! Schöne Arbeit, Henrik.

InformationsquelleAutor Edward Ocampo-Gooding | 2011-03-20

Schreibe einen Kommentar