Cách tốt nhất để giải cứu ngoại lệ từ Net :: HTTP là gì?Cách tốt nhất để xử lý ngoại lệ từ Net :: HTTP là gì?
Trường hợp ngoại lệ được ném được mô tả trong số socket.c
của Ruby, như Errno::ETIMEDOUT
, Errno::ECONNRESET
và Errno::ECONNREFUSED
. Các lớp cơ sở cho tất cả trong số này là SystemCallError
, nhưng nó cảm thấy lạ để viết mã như sau vì SystemCallError
dường như quá xa so với thực hiện một cuộc gọi HTTP
:
begin
response = Net::HTTP.get_response(uri)
response.code == "200"
rescue SystemCallError
false
end
là nó chỉ cho tôi? Có cách nào tốt hơn để xử lý việc này ngoài việc sửa chữa Net::HTTP
để xử lý các trường hợp ngoại lệ Errno
có khả năng sẽ bật lên và đóng gói chúng trong một phụ huynh HttpRequestException
?
Cảm ơn mọi người! Tôi đã kết thúc đóng gói các câu trả lời dưới dạng một Gem Ruby mà tôi có thể sử dụng trong tương lai để đối phó với tình huống này: net_http_exception_fix [https://github.com/edward/net_http_exception_fix] –
Liên kết chính xác: https://github.com/edward/net_http_exception_fix (bình luận của Edward trích thêm một "]" vào URL). – myhd
Tôi đã viết một thư viện khác giải quyết cùng một vấn đề theo một cách khác: http://github.com/barsoom/net_http_timeout_errors –