在使用Ruby探索Timeout模块时,我构建了一个非常简单的本网站为指南程序。
print "\nEnter Input:"
require 'timeout'
Timeout::timeout(5) do
input = gets.chomp
end
print "\nEXITING\n"当我运行这个脚本时,它会提示用户输入,但是在5秒后,它不是简单地打印“退出”并按照逻辑应该立即终止,而是崩溃,返回错误:
'gets': execution expired (Timeout::Error)
我想知道这是为什么,以及如何避免这个错误,而脚本等待用户输入5秒,然后终止。
提前谢谢。
发布于 2016-04-28 09:05:52
请参阅模块超时的文档
它清楚地指出,它在块中执行操作,如果完成的时间超过秒秒,则会引发错误。
要获得所需的输出,可以使用一个rescue块来拯救Timeout::Error,然后显示您的EXITING消息:
require 'timeout'
print "\nEnter Input:"
begin
Timeout::timeout(5) do
input = gets.chomp
end
rescue Timeout::Error => e
print "\nEXITING\n"
endhttps://stackoverflow.com/questions/36909982
复制相似问题