1
新しいココアテストプロジェクトのアプリケーションのデリゲートにある次の単純なコードです。NSSetUncaughtExceptionHandlerがLion 10.7.3で動作していない
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;
}
例外名と理由でコンソールログの行が1つしか表示されませんが、onUncaughtExceptionは呼び出されません。アプリは問題なく動作し続けます。
私はここで何が欠けていますか?私は同じ結果を持つデバッグとリリースビルドでこれを試しました。
はい、アプリのメインスレッドの例外はキャッチされません。 @theReverend、[例外プログラミングのトピック:例外へのプログラムの応答の制御](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Exceptions/Tasks/ControllingAppResponse.html)を参照してください。 –