2012-02-09 25 views

risposta

31

di prenderlo, farlo proprio come qualsiasi altra eccezione:

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

Un modello più utile è quello di provare un paio di volte, poi rinunciare:

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 
+2

Grazie. Ho davvero imparato molto da StackOverflow :) – revolver

+1

Ulteriori informazioni su questo modello 'retry' Ruby: http://blog.mirthlab.com/2012/05/25/cleanly-retrying-blocks-of-code-after-an-exception -in-ruby/ –

4

An ancora più utile è utilizzare retries gem:

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

Oppure la gemma più popolare e mantenuta [retraibile] (https://github.com/kamui/retriable). –

Problemi correlati