Re: Exiting non-POSIX threads?
Re: Exiting non-POSIX threads?
- Subject: Re: Exiting non-POSIX threads?
- From: Graham Cox <email@hidden>
- Date: Wed, 31 Jul 2013 09:07:21 +0200
On 30/07/2013, at 7:43 PM, Quincey Morris <email@hidden> wrote:
> On Jul 30, 2013, at 10:26 , Graham Cox <email@hidden> wrote:
>
>> How often have you encountered an unexpected exception from some low-level code you don't own under circumstances you can't control? If your app crashed every time you'd soon have a reputation for unreliability that is in all probability undeserved. On balance it's better to carry on with some minor glitch than "quit unexpectedly".
>
> Surely the problem with this perspective is that the uncaught exception results in an abrupt transfer of control from the point of the exception back to (approximately) [NSApplication sendEvent:]?
>
> If you don't own the low-level code where the exception was thrown, you can have no confidence that non-stack data structures being maintained by that code -- along with all of the intermediate levels of calling code -- are in any usable state.
>
I totally agree - from the point of view of a developer.
However, from the point of view of a) the user and b) the director of a company making and selling apps, it's not what you want to happen. Any crash is unacceptable - it makes the app look flaky and the user will lose faith in it and probably lose their data too. The vast majority of exceptions in practice are benign - much better to effectively ignore them and continue as best you can (which is very often with 100% functionality) than crash. If there are cases that come up that can be handled better, then those handlers can be added in later.
As an example, I had one recently where under very specific circumstances, the user could end up pushing the code into inverting a transform that had no inverse, e.g. a divide by zero. The Core Graphics framework throws an exception if you do that, but the specific circumstances had not been caught in testing because it was such a weird corner case. If my app crashed at that point, it would look very serious indeed, whereas the actual outcome for the user was a very minor graphical glitch. I now add a handler for that case that puts things back in a good state, but simply ignoring the original exception wasn't a disaster either.
--Graham
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden