¿Cuál es la mejor forma de rescatar excepciones de Net :: HTTP?¿Cuál es la mejor forma de manejar excepciones de Net :: HTTP?
Las excepciones lanzadas se describen en Ruby's socket.c
, como Errno::ETIMEDOUT
, Errno::ECONNRESET
y Errno::ECONNREFUSED
. La clase base para todos estos es SystemCallError
, pero se siente raro escribir código como el siguiente, porque SystemCallError
parece tan lejos de hacer una llamada HTTP
:
begin
response = Net::HTTP.get_response(uri)
response.code == "200"
rescue SystemCallError
false
end
¿Soy yo? ¿Hay una mejor manera de manejar esto más allá de la fijación de Net::HTTP
para manejar las excepciones Errno
que probablemente aparecerían y las encapsularían en un padre HttpRequestException
?
¡Gracias a todos! Terminé empaquetando las respuestas en forma de Ruby Gem que puedo usar en el futuro para manejar esta situación: net_http_exception_fix [https://github.com/edward/net_http_exception_fix] –
Enlace correcto: https://github.com/edward/net_http_exception_fix (el comentario de Edward sorbe un "]" extra en la URL). – myhd
He escrito otra biblioteca que resuelve el mismo problema de otra manera: http://github.com/barsoom/net_http_timeout_errors –