为什么没有';Ruby超时不会引发错误吗?

为什么没有';Ruby超时不会引发错误吗?,ruby,timeout,Ruby,Timeout,为什么这个代码没有引起错误 require 'net/ping' host = Net::Ping::External.new('1.1.1.1') Timeout.timeout(3) do until host.ping? sleep(1) host = Net::Ping::External.new('1.1.1.1') end end 此示例引发了一个错误: require 'net/ping' Timeout.timeout(3) do until f

为什么这个代码没有引起错误

require 'net/ping'
host = Net::Ping::External.new('1.1.1.1')

Timeout.timeout(3) do
  until host.ping?
    sleep(1)
    host = Net::Ping::External.new('1.1.1.1')
  end
end
此示例引发了一个错误:

require 'net/ping'

Timeout.timeout(3) do
  until false
    sleep(4)
  end
end

ruby-2.0.0-p594[x86_64]。也许是ruby版本的问题?因为使用ruby-2.1.3[x86_64]一切正常。

欢迎使用堆栈溢出。不要在评论中添加重要信息。相反,编辑您的问题并将其添加到中,就像您最初输入的一样。我怀疑问题与IP超时有关。它正在阻止代码尝试ping一个无法访问的地址。尝试使用
ping 1.1.1.1
traceroute 1.1.1.1
并查看发生了什么。谢谢,因为我知道IP有自己的超时。是的,这会一直咬人。欢迎使用堆栈溢出。不要在评论中添加重要信息。相反,编辑您的问题并将其添加到中,就像您最初输入的一样。我怀疑问题与IP超时有关。它正在阻止代码尝试ping一个无法访问的地址。尝试使用
ping 1.1.1.1
traceroute 1.1.1.1
看看会发生什么。谢谢你,因为我知道IP有自己的超时。是的,这会一直咬人。