我在探索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