Ruby 编程:'gets'执行过期超时。超时错误



我在探索Timeout模块时构建了一个非常简单的Ruby程序,以这个网站为指导。

print "nEnter Input:"
require 'timeout'
Timeout::timeout(5) do
    input = gets.chomp
end
print "nEXITINGn"

当我运行脚本时,它会提示用户输入,但是在 5 秒后,它不是简单地打印"EXITING"并按逻辑方式立即终止,而是崩溃并返回错误:

'gets': execution expired (Timeout::Error)

我想知道为什么会这样,以及如何在脚本等待用户输入 5 秒后避免此错误,然后再终止。

提前谢谢。

请参阅模块超时的文档

它清楚地指出它在块中执行操作,如果完成时间超过秒,则会引发错误

要获得所需的输出,您可以使用rescue块来拯救Timeout::Error,然后显示您的EXITING消息:

require 'timeout'
print "nEnter Input:"
begin
  Timeout::timeout(5) do
    input = gets.chomp
  end
rescue Timeout::Error => e
  print "nEXITINGn"
end

最新更新