iOS未捕获异常处理程序未调用

Kev*_*Lee 5 exception handler ios

我遇到的情况类似于未调用的未捕获异常处理程序,但他是Mac应用程序,而我是iOS应用程序。解决方案是使用ExceptionHandler框架,但是在iOS上不可用。

我有一个全新的iOS单视图应用程序,它只有几行代码,所以我不会粘贴整个文件。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
    NSSetUncaughtExceptionHandler(&handler);
    @throw NSInternalInconsistencyException;
    return YES;
}

void handler()                                                                              
{
    NSLog(@"hello world");                                                                  
}
Run Code Online (Sandbox Code Playgroud)

因此,didFinishLaunchingWithOptions我设置了自定义异常处理程序,然后强制崩溃。然后将异常处理程序打印hello world到控制台,但这不会发生。在处理程序中放置断点表明执行未进入方法。但是无论如何,异常都会打印到控制台(默认操作)。

2014-07-24 08:58:25.476 Exception[430:70b] *** Terminating app due to uncaught exception of class '__NSCFConstantString'
libc++abi.dylib: terminating with uncaught exception of type __NSCFConstantString
Run Code Online (Sandbox Code Playgroud)

我的处理程序在某处之后是否可以默认设置另一个异常处理程序?

更新

我决定将强制崩溃的方式从更改NSInternalInconsistencyException[[NSArray arrayWithObject:@"object"] objectAtIndex:1];。现在将调用该处理程序并将hello world其打印到控制台。

所以现在的问题是,为什么没有NSINternalInconsistencyException导致处理程序被调用?错误略有不同:

2014-07-24 10:13:51.333 Exception[1474:70b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
...
...
...
libc++abi.dylib: terminating with uncaught exception of type NSException
Run Code Online (Sandbox Code Playgroud)