ruby - 当引发异常并且程序停止执行时,哪个系统信号被发送到 ruby​​ 程序?

标签 ruby

任何时候我的程序停止执行(无论是通过 cmd-c 关闭还是遇到异常),我都想采取一些措施来正确关闭。

当我执行 cmd-c 时,我收到信号 TERM。当程序遇到引发的异常时发送什么信号?我如何使用 Signal.trap(...) 捕获它?

最佳答案

您可以将代码包装在 begin-ensure-end block 中。它会捕获异常和 CTRL-C。 (您可以在 ensure 之前添加一个 rescue 子句)。

begin
  sleep 10 #try CTRL-C here
  raise "kaboom" #RuntimeError
ensure
  puts "This must be printed no matter what."
end

关于ruby - 当引发异常并且程序停止执行时,哪个系统信号被发送到 ruby​​ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10436501/

相关文章:

ruby - Ruby测试期望命令会被执行

ruby - Guard 的事件处理程序(退出时)?

sql - Rails 根据相关模型的属性对模型进行排序

mysql - 使用 ActiveRecord 在遗留数据库中按日期对日期时间列进行分组

java - API 和 Web 服务有什么区别?

mysql - Rails 管理 mariadb 10.3 中表的版本控制

python - Python 和 Perl 中是否有像 Ruby 中那样的全局对象?

html - 如何将选定的按钮存储在参数中?

ruby - 在 Ruby 中将数据从一列转换为多列

ruby - 如何在 Swift 中创建类似于 Ruby 中的扫描的函数