This setting only affects exceptions that occure during event processing in the 
run loop. If the exception you get comes from the run loop, this mechanism 
should work and if it doesn't, we should fix that.

At the moment you have a very specific situation where the alert isn't working 
itself, in this situation, getting a log message will be really helpful. In all 
other cases it would just dublicate the message in the alert. For that reason I 
would suggest you make this change locally and don't commit it. Or you set your 
own exception handler in you test code to get full control.

Fred

On the road

Am 03.08.2013 um 15:14 schrieb Ivan Vučica <[email protected]>:

> Hi Fred,
> 
> On Fri, Aug 2, 2013 at 4:50 PM, Fred Kiefer <[email protected]> wrote:
> 
> please have a look at this method in NSApplication:
> 
> - (void) _handleException: (NSException *)exception
> 
> As you can see it gets the mask for exception handling from the
> defaults. My current setting there is 3, which means I get a log and the
> exception ends up in a panel. This is the best setting for a development
> environment, but not what you want on a user desktop.
> 
> I've also looked at this method, since AppKit's interception of exceptions 
> complicates debugging -back.
> 
> It looks like setting NSExceptionHandlerMask to 1 in NSGlobalDomain.plist 
> does not prevent AppKit's exception handler from kicking in (and trying to 
> show the alert panel), and setting it to 0 does not help either.
> 
> Nothing is logged in my case before the alert display code in 
> _NSAppKitUncaughtExceptionHandler() kicks in.
> 
> I propose a change to _NSAppKitUncaughtExceptionHandler() to add 
> NSLog(@"Unhandled exception: %@", exception); just before the call to 
> GSRunExceptionPanel() (but after the possible bailing out in case current 
> context is nil).
> 
> Any objections?
> 
> I'll be happy to commit the following diff:
> 
> Index: Source/NSApplication.m
> ===================================================================
> --- Source/NSApplication.m    (revision 36941)
> +++ Source/NSApplication.m    (working copy)
> @@ -131,6 +131,8 @@
>        [exception raise];
>      }
>  
> +  NSLog(@"Unhandled exception: %@", exception);
> +
>    retVal = GSRunExceptionPanel 
>      ([NSString stringWithFormat: _(@"Critical Error in %@"),
>              [[NSProcessInfo processInfo] processName]],
> 
> 
> -- 
> Ivan Vučica
> [email protected]
> _______________________________________________
> Discuss-gnustep mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to