我想检测应用程序中任何地方引发某个异常的时间,无论它是否在调用堆栈中被挽救得更高,而且无论它被抛入哪个线程。这可能吗?
我可能会覆盖Kernel的raise方法,但我想知道是否有更好的方法。
答案 0 :(得分:3)
尝试覆盖异常类的“initialize”方法。
class MyCustomError < Exception
alias_method :old_initialize, :initialize
def initialize
puts "hello"
old_initialize
end
end
发生以下行为:
begin
puts "test"
fail MyCustomError
rescue
end
IRB输出:
test
hello
=> nil