【发布时间】:2011-01-06 13:27:35
【问题描述】:
我通过了一个长期运行的遗留 ruby 程序,它有很多次出现
begin
#dosomething
rescue Exception => e
#halt the exception's progress
end
贯穿始终。
如果不跟踪每个可能处理的异常(至少不是立即),我仍然希望能够不时使用 CtrlC.
而且我想以一种只添加到代码中的方式这样做(这样我就不会影响现有的行为,或者在运行过程中错过其他捕获的异常。)
[CtrlC 是 SIGINT 或 SystemExit,在 Ruby 的异常处理系统中似乎等同于 SignalException.new("INT")。 class SignalException < Exception,这就是为什么会出现这个问题。]
我想写的代码是:
begin
#dosomething
rescue SignalException => e
raise e
rescue Exception => e
#halt the exception's progress
end
编辑:只要您获得要捕获的异常的正确类,此代码就可以工作。这可以是 SystemExit、Interrupt 或 IRB::Abort,如下所示。
【问题讨论】:
标签: ruby exception copy-paste