We use to have a global exception handler but that gets overwritten by AppKit when using classes there so we currently just catch and raise for methods calling our rb_objc_dispatch function which is the hot path.
It would be nice to do something for all the edge case methods though, things like to_xxx and even rb_objc_new and rb_objc_release could have exceptions too (basically anywhere we do an autorelease).
Additionally, for Ruby to Objective-C proxy subclasses of ObjRuby::NSObject, I'm not convinced yet that raising an exception from Ruby will "do the right thing" in Objective-C. Ideally we'd want to raise an NSException when this happens.
We use to have a global exception handler but that gets overwritten by AppKit when using classes there so we currently just catch and raise for methods calling our
rb_objc_dispatchfunction which is the hot path.It would be nice to do something for all the edge case methods though, things like
to_xxxand evenrb_objc_newandrb_objc_releasecould have exceptions too (basically anywhere we do an autorelease).Additionally, for Ruby to Objective-C proxy subclasses of
ObjRuby::NSObject, I'm not convinced yet that raising an exception from Ruby will "do the right thing" in Objective-C. Ideally we'd want to raise an NSException when this happens.