【问题标题】:When will ruby's ensure not run?ruby 的确保何时不会运行?
【发布时间】:2014-08-11 02:23:26
【问题描述】:

我有一个在 eventmachine 反应器中运行的服务器,它监听用户的心跳来判断他们是否在线。它在开始/停止接收心跳时将用户适当地标记为在线和离线。

我想将它全部包装在一个确保块中,以便在它退出时将所有当前在线用户标记为离线,但我不确定这有多可靠。

在什么情况下进程可以退出而不运行包装当前执行上下文的确保块?

【问题讨论】:

    标签: ruby exception-handling


    【解决方案1】:

    不少,例如:

    • 被 kill -9 杀死
    • 分段错误等(例如 ruby​​ 本身或本机扩展中的错误)
    • 电源故障
    • 整个系统崩溃(例如内核/驱动程序错误、硬件故障等)

    网络故障不会阻止您的 ensure 块运行,但可能意味着它无法更新存储这些状态的任何数据存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2017-07-31
      • 2017-01-31
      • 1970-01-01
      • 2020-07-03
      • 2013-11-24
      • 1970-01-01
      相关资源
      最近更新 更多