我通过了一个长期运行的旧式红宝石程序,该程序多次出现
begin
#dosomething
rescue Exception => e
#halt the exception's progress
end
整个过程。
在不跟踪每个可能的异常的情况下(至少不是立即),我仍然希望能够使用有时将其关闭CtrlC。
而且我想这样做的方式只会增加代码(这样我就不会影响现有行为,也不会在运行过程中遗漏否则捕获的异常)。
[ CtrlC是SIGINT或SystemExit,它似乎与SignalException.new("INT")
Ruby的异常处理系统等效。class SignalException < Exception
,这就是为什么出现此问题的原因。]
我想写的代码是:
begin
#dosomething
rescue SignalException => e
raise e
rescue Exception => e
#halt the exception's progress
end
编辑:此代码有效,只要您获取要捕获正确的异常的类。可以是SystemExit,Interrupt或IRB :: Abort,如下所示。