gpt4 book ai didi

ruby - 救援/捕获 ctrl-break

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:15 27 4
gpt4 key购买 nike

如何捕获 ctrl-break 组合键引发的异常?我在 Windows 上运行一个 ruby​​ 程序(在 cmd.exe 内),我用这样的东西捕获 ctrl-c :

rescue Interrupt
puts 'Doing cleanup task before exiting'
raise

在程序退出(删除文件)之前我有清理任务要做,这适用于 ctrl-c。如果我使用 ctrl-break 退出程序,异常不会被捕获,它只是在控制台显示 ^C 后终止。

有时我的程序会进入 ctrl-c 没有响应的状态,我必须使用 ctrl-break 关闭它,但我仍然希望我的救援功能起作用。我需要捕获其他异常类型吗?

最佳答案

ctrl-break 发送 SIGBREAK,因此这是处理它的预期方式:

trap("BREAK") { puts "ctrl-break" }

不幸的是,Ruby 不知道 (SIG)BREAK,因此您必须使用信号编号来代替,它应该是 21:

trap(21) { puts "ctrl-break" }

ctrl-c 可以相应处理,即:

trap("INT") { puts "ctrl-c" }

关于ruby - 救援/捕获 ctrl-break,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18662273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com