我有一个简单的异常处理块
begin
<connect to network and make a request>
rescue
<comes here if it didnt connect / whatever other error>
end
我想修改它,以便在救援方面 - 它会重新开始。试试5次。如果仍然没有连接 - 走出街区
答案 0 :(得分:3)
你想要关键字retry
。加上MAX_RETRIES。即if (MAX_RETRIES -= 1) > 0
重试
答案 1 :(得分:1)
增加一个计数器和retry
,直到该计数器达到该值:
MAX_RETRIES = 5
retries = 0
begin
do_something
rescue ex
if retries += 1 <= MAX_RETRIES
retry
else
raise ex
end
end
您可能只想重试某些与网络相关的异常,例如超时。有时候,一旦找不到或被禁止,除非你进行轮询直到改变。
答案 2 :(得分:1)
这应该做:
5.times do |i|
begin
1/0
rescue
puts 'Try #{i+1} failed ...'
next
end
puts 'Try #{i+1} success.'
break
end
答案 3 :(得分: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)