Skip navigation.
 
mlRe: Crashing on all relevant exceptions
FROM : Shaun Wexler
DATE : Tue Aug 08 05:46:33 2006

On Aug 7, 2006, at 8:17 PM, Aaron Jacobs wrote:

> After correcting the problem with the single = sign in the if 
> statement, this compiles and runs fine.  But it still has the same 
> problem as the other solutions: the only way to preempt 
> NSApplication's exception handler is to install my own, but if I do 
> that, then the application does not crash when there is an exception.
>
> Either I want some way for my handler to force the application to 
> crash with the stack trace of when the exception was originally 
> raised, or I want there to be no exception handler at all.


#include <RTFM>
#import <Cocoa/Cocoa.h>
#import <ExceptionHandling/NSExceptionHandler.h>

static void MyUncaughtExceptionHandler(NSException *exception)
{
    NSLog(@"*** Uncaught exception: %@ %@ [%@]\n", [exception name], 
[exception reason],
        [[exception userInfo] objectForKey:NSStackTraceKey]);
}

int main(int argc, char *argv[])
{
    NSSetUncaughtExceptionHandler(MyUncaughtExceptionHandler);
   
    [[NSExceptionHandler defaultExceptionHandler] 
setExceptionHandlingMask:
        NSHandleUncaughtExceptionMask |
        NSHandleUncaughtSystemExceptionMask |
        NSHandleUncaughtRuntimeErrorMask |
        NSHandleTopLevelExceptionMask |
        NSHandleOtherExceptionMask];
   
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
    Class appClass = NSClassFromString([infoDict 
objectForKey:@"NSPrincipalClass"]);
    [NSBundle loadNibNamed:[infoDict objectForKey:@"NSMainNibFile"] 
owner:[appClass sharedApplication]];
    [NSApp finishLaunching];
    [pool release];
   
   do {
        @try {
            [NSApp run];
        }
        @catch (NSException *exception) {
            MyUncaughtExceptionHandler(exception);
        }
    } while ([NSApp isRunning]);
   
    return 0;
}

--
Shaun Wexler
MacFOH
http://www.macfoh.com

Sarchasm \sar"chasm\, n. the void between the author of a satirical 
witticism and the recipient who just doesn't get it.

Related mailsAuthorDate
mlCrashing on all relevant exceptions Aaron Jacobs Aug 7, 00:31
mlRe: Crashing on all relevant exceptions Nick Zitzmann Aug 7, 08:23
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 7, 08:30
mlRe: Crashing on all relevant exceptions Chris Suter Aug 7, 08:34
mlRe: Crashing on all relevant exceptions Nick Zitzmann Aug 7, 17:47
mlRe: Crashing on all relevant exceptions Matt Neuburg Aug 7, 17:48
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 7, 22:48
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 7, 23:59
mlRe: Crashing on all relevant exceptions Shaun Wexler Aug 8, 02:28
mlRe: Crashing on all relevant exceptions Nick Zitzmann Aug 8, 03:38
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 8, 04:34
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 8, 04:53
mlRe: Crashing on all relevant exceptions Shaun Wexler Aug 8, 05:06
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 8, 05:17
mlRe: Crashing on all relevant exceptions Shaun Wexler Aug 8, 05:19
mlRe: Crashing on all relevant exceptions Shaun Wexler Aug 8, 05:46
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 8, 05:56
mlRe: Crashing on all relevant exceptions Shaun Wexler Aug 8, 23:12
mlRe: Crashing on all relevant exceptions Aaron Jacobs Aug 9, 00:35