在提高时检测异常

时间:2014-03-06 20:44:46

标签: ruby-on-rails ruby jruby

我想检测应用程序中任何地方引发某个异常的时间,无论它是否在调用堆栈中被挽救得更高,而且无论它被抛入哪个线程。这可能吗?

我可能会覆盖Kernel的raise方法,但我想知道是否有更好的方法。

1 个答案:

答案 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