Thanks, this is all useful info. I checked NSExceptionHandler and NSUncaughtExceptionHandler, but they are just for logging before termination. NSRunLoop is accessible but there's not much there.
However, simply replacing the C++ throw with a Cocoa exception via [NSException raise : errString format : errString]; seems to work great. Apparently it unwinds the call stack and is swallowed in the run loop. It doesn't use the error string but that's fine. We already show a dialog before the throw, with file & line number. Helps enormously for fixing bugs. Thanks for all the help, Casey McDermott -------------------------------------------- On Thu, 6/14/18, Alastair Houghton <alast...@alastairs-place.net> wrote: Subject: Re: Exception handling To: "Jens Alfke" <j...@mooseyard.com> Cc: "Casey McDermott" <supp...@turtlesoft.com>, "cocoa-dev list" <cocoa-dev@lists.apple.com> Date: Thursday, June 14, 2018, 1:11 PM On 14 Jun 2018, at 18:00, Jens Alfke <j...@mooseyard.com> wrote: On Jun 13, 2018, at 7:22 PM, Casey McDermott <supp...@turtlesoft.com> wrote: Our Carbon event loop had a try/catch block, which caught most exceptions, and then continued. It started as an expedient in early production, but it remained in production code since it often allows users to continue, save their work, etc. That's actually how Cocoa used to work. I can't recall whether an alert panel popped up or if it was just silent. The behavior changed to crashing sometime in the past, um, 8 years or so. I don’t think it’s changed in any obvious way; the framework has always swallowed exceptions in certain contexts, but not in others. Obviously the precise detail may have changed over time, but it’s certainly crashed on exceptions for as long as I remember, outside of the places where they get ignored for whatever reason. Is there a way to override the event loop in Cocoa? Some other way we can escape to the event loop and then continue from there? There used to be either a callback or an overridable NSApplication method to handle an uncaught exception, but looking at current headers I can't find what I'm looking for; maybe it's been gone for a long time and removed? Perhaps you’re thinking of NSSetUncaughtExceptionHandler()? I don’t think there’s much you can usefully do from that, though, besides logging the exception. Kind regards, Alastair. --http://alastairs-place.net _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com