2015-06-01 26 views

回答

3

你想要的關鍵字retry。再加上MAX_RETRIES。即if (MAX_RETRIES -= 1) > 0 重試

+0

不情願+1:'MAX_RETRIES - = 1'不好(修改一個常量)。 @JulienPortalier是對的。 – Amadan

+0

公平點。我只是用它來說明這個想法,但你是對的。 – osman

1

計數器加retry,直到該計數器命中值:

MAX_RETRIES = 5 
retries = 0 

begin 
    do_something 
rescue ex 
    if retries += 1 <= MAX_RETRIES 
    retry 
    else 
    raise ex 
    end 
end 

你可能要重新上只有一些與網絡有關的例外情況,如超時。有時一個未被發現或被禁止的東西總是會被除去,除非你在這個變化之前進行投票。

1

這應該這樣做:

5.times do |i| 
    begin 
    1/0 
    rescue 
    puts 'Try #{i+1} failed ...' 
    next 
    end 
    puts 'Try #{i+1} success.' 
    break 
end 
0

寫一個方法來連接到網絡這樣

def connect_to_server(retry_count) 
    begin 
    retry_count += 1 
    <connect to network and make a request> 
    rescue 
    if(retry_count <= 5) 
     connect_to_server(retry_count) 
    end 
    end 
end 

調用該方法

connect_to_server(0)