Actions
Feature #5856
closedFeature: Raise any object
Description
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
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0