ruby - ruby 的 ensure 什么时候不会运行?

标签 ruby exception

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

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

在什么情况下,进程可以在不运行包裹当前执行上下文的 ensure block 的情况下退出?

最佳答案

不少,例如:

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

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

关于ruby - ruby 的 ensure 什么时候不会运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235089/

相关文章:

ruby - mandrill 和嵌套合并变量

ruby-on-rails - Rails 自定义弃用通知

ruby-on-rails - Rails 5 中的 RuntimeError 无法修改卡住的字符串

ios - swift中错误和异常的区别

c++ - std::ostream 到 QString?

c++ - 如何使用 gdb 在 C++ 中获取当前异常的值和类型?

ruby - 按下 X 按钮时在 Windows 上强制使用 Ruby 代码

java - 如何使用mockito抛出HttpClientErrorException.Unauthorized错误

rest - force.com 标注异常无法通过代理建立隧道

ruby-on-rails - rails 4 - 在初始化器或使用它的模块中需要类 - 最佳实践