From: Kurt Stephens Date: 2012-01-07T06:51:53+09:00 Subject: [ruby-core:41950] [ruby-trunk - Feature #5856][Open] Feature: Raise any object Issue #5856 has been reported by Kurt Stephens. ---------------------------------------- Feature #5856: Feature: Raise any object https://bugs.ruby-lang.org/issues/5856 Author: Kurt Stephens Status: Open Priority: Normal Assignee: Category: Target version: Feature: Raise any object = Proposal The ability to raise any object that conforms to the protocol of Exception. = Problem * The Exception subclass hierarchy is well-established. * CRuby does not allow any object that behaves as an Exception to be raised, it must be a subclass of Exception. * 3rd-party code often rescues Exception; e.g. for error recovery, retry and/or logging. * Users need the ability to raise objects that would not normally be rescued by *any* code; e.g.: hard timeouts or custom signal handlers in an application. = Solution * ruby/eval.c: Remove make_exception() assertion rb_obj_is_kind_of(mesg, rb_mRaiseable). = Implementation * See attached patch or https://github.com/kstephens/ruby/tree/trunk-raise-any = Example * See test/ruby/test_raise_any.rb = See also * https://bugs.ruby-lang.org/issues/5818 -- http://redmine.ruby-lang.org