【问题标题】:Ruby Programming: 'gets' execution expired Timeout.timeout errorRuby 编程:“获取”执行已过期 Timeout.timeout 错误
【发布时间】:2016-04-28 09:03:34
【问题描述】:

我在探索Timeout模块时构建了一个非常简单的Ruby程序,使用this site as a guide

print "\nEnter Input:"

require 'timeout'
Timeout::timeout(5) do
    input = gets.chomp
end

print "\nEXITING\n"

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

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

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

提前致谢。

【问题讨论】:

    标签: ruby timeout


    【解决方案1】:

    请参阅模块Timeout的文档

    它明确指出它在一个块中执行操作,如果完成时间超过 sec 秒,则会引发错误

    要获得所需的输出,您可以使用 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"
    end
    

    【讨论】:

    • 没错! “帮助,我的代码正在做它应该做的事!”这就是为什么阅读手册总是很重要的原因。
    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    相关资源
    最近更新 更多