From: Shane Liesegang Date: 2007-09-01T01:35:54+09:00 Subject: Overriding Kernel#raise I'm writing a C++ program that has a Ruby interpreter embedded in it. I'd like to keep all Ruby-related exceptions contained within the Ruby runtime so that I don't have to protect all my calls. Since native objects can be subclassed by Ruby, you never know when a call is going to result in the interpreter doing something. To contain the exceptions, I've overridden Kernel#raise, like this: module Kernel alias _raise raise def raise(*a) begin if a.size == 0 _raise elsif a.size == 1 _raise(a[0]) else _raise(a[0], a[1]) end rescue Exception => e $stderr.print e.class, ": ", e.message, "\n" $stderr.puts e.backtrace unless e.backtrace.nil? end end end I can't shake the feeling that this is *dirty* and that there must be a better way to do things. Just hoping to get some feedback on both the concept and implementation. -- Posted via http://www.ruby-forum.com/.