2012-05-12 7 views
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は呼び出されません。アプリは問題なく動作し続けます。

私はここで何が欠けていますか?私は同じ結果を持つデバッグとリリースビルドでこれを試しました。

答えて

0

私はその全てを知っているわけではありませんが、ハンドラに失敗する前にNSApplicationが傍受していると思われます。

+0

はい、アプリのメインスレッドの例外はキャッチされません。 @theReverend、[例外プログラミングのトピック:例外へのプログラムの応答の制御](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Exceptions/Tasks/ControllingAppResponse.html)を参照してください。 –

関連する問題