如何捕获错误通过对等方重置连接(Errno :: ECONNRESET)

以下代码有时会生成“按对等方重置连接”错误。 谁能告诉我如何处理这个exception?

doc = Nokogiri::HTML(open(url)) Connection reset by peer (Errno::ECONNRESET) 

为了捕获它,就像任何其他exception一样:

 begin doc = Nokogiri::HTML(open(url)) rescue Errno::ECONNRESET => e puts "we are handling it!" end 

一个更有用的模式是尝试几次,然后放弃:

 count = 0 begin doc = Nokogiri::HTML(open(url)) rescue Errno::ECONNRESET => e count += 1 retry unless count > 10 puts "tried 10 times and couldn't get #{url}: #{e} end 

一个更有用的模式是使用重试gem :

 with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do doc = Nokogiri::HTML(open(url)) end