Ruby中的异常处理 - 如果要进行救援则调用start

时间:2015-06-01 05:52:21

标签: ruby-on-rails ruby

我有一个简单的异常处理块

begin
    <connect to network and make a request>
rescue
    <comes here if it didnt connect / whatever other error>
end

我想修改它,以便在救援方面 - 它会重新开始。试试5次。如果仍然没有连接 - 走出街区

4 个答案:

答案 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)