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)
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |