從Net :: HTTP中拯救異常的最佳方式是什麼?從Net :: HTTP處理異常的最佳方式是什麼?
拋出的異常在Ruby的socket.c
中描述,如Errno::ETIMEDOUT
,Errno::ECONNRESET
和Errno::ECONNREFUSED
。該基類所有這些是SystemCallError
,但感覺奇怪,因爲SystemCallError
似乎到目前爲止作出的HTTP
通話中移除寫類似下面的代碼:
begin
response = Net::HTTP.get_response(uri)
response.code == "200"
rescue SystemCallError
false
end
難道僅僅是我嗎?有沒有更好的方式來解決這個問題,除了修復Net::HTTP
來處理Errno
異常,可能會彈出並將它們封裝在父代HttpRequestException
中?
謝謝大家!我最終打包了一個Ruby Gem形式的答案,我可以在將來處理這種情況:net_http_exception_fix [https://github.com/edward/net_http_exception_fix] – 2011-03-21 01:10:21
正確的鏈接:https://github.com/edward/net_http_exception_fix(Edward的評論在URL中插入一個額外的「]」)。 – myhd 2012-12-20 21:48:22
我已經寫了另一個庫,以不同的方式解決相同的問題:http://github.com/barsoom/net_http_timeout_errors – 2013-01-26 21:41:34