我正在尝试捕获 Mac 应用程序上的异常,以便可以将它们记录在自定义日志文件中。我正在像这样实现异常处理程序:
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"It Works!");
}
我把它设置在我的-applicationDidFinishLaunching:
像这样的方法:
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
然后我引发一个异常来测试它,如下所示:
[[NSArray arrayWithObject:@"object"] objectAtIndex:1];
异常被记录到控制台,但我的异常处理程序没有被调用。
有任何想法吗?
解决方案是使用ExceptionHandling
框架。我是这样做的:
In -applicationDidFinishLaunching:
[[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:NSLogAndHandleEveryExceptionMask];
[[NSExceptionHandler defaultExceptionHandler] setDelegate:self];
然后在我的 App Delegate 类中我实现了两个委托方法,
- (BOOL)exceptionHandler:(NSExceptionHandler *)sender shouldLogException:(NSException *)exception mask:(NSUInteger)aMask
- (BOOL)exceptionHandler:(NSExceptionHandler *)sender shouldHandleException:(NSException *)exception mask:(NSUInteger)aMask
现在我可以捕获所有异常!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)