NSSetUncaughtExceptionHandler 在 Lion 10.7.3 上不起作用

Posted

技术标签:

【中文标题】NSSetUncaughtExceptionHandler 在 Lion 10.7.3 上不起作用【英文标题】:NSSetUncaughtExceptionHandler not working on Lion 10.7.3 【发布时间】:2012-05-12 23:02:02 【问题描述】:

以下简单代码用于新可可测试项目的应用委托。

void onUncaughtException(NSException *exception)
    NSLog(@"Caught!!! %@", exception);


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

    NSSetUncaughtExceptionHandler(&onUncaughtException);

    NSException *exception = [[NSException alloc]initWithName:@"exception" reason:@"exception reason here" userInfo:nil];
    @throw exception;

我只得到带有异常名称和原因的单个控制台日志行,但不会调用 onUncaughtException。该应用程序继续运行,没有问题。

我在这里缺少什么?我在调试和发布版本中尝试了这个,结果相同。

【问题讨论】:

【参考方案1】:

我不知道它的所有来龙去脉,但我怀疑 NSApplication 在它无法通过您的处理程序之前拦截它。

【讨论】:

是的,应用程序主线程上的异常并非未被捕获。 @theReverend,见Exception Programming Topics: Controlling a Program’s Response to Exceptions。

以上是关于NSSetUncaughtExceptionHandler 在 Lion 10.7.3 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章