iOS Uncaught Exception Handler没有被调用

时间:2014-07-24 08:13:38

标签: ios exception handler

我和Uncaught exception handler not called的情况类似,但他是Mac应用程序,我的是iOS应用程序。解决方案是使用ExceptionHandler框架,但这在iOS上不可用。

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

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

void handler()                                                                              
{
    NSLog(@"hello world");                                                                  
}

所以在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

在我的处理程序之后,默认情况下是否会设置另一个异常处理程序?

更新

我决定更改崩溃的方式从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

0 个答案:

没有答案