2012-05-12 31 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; 
} 

我只得到一個控制檯日誌行與異常的名稱和原因,但onUncaughtException不會被調用。該應用程序繼續運行沒有問題。

我在這裏錯過了什麼?我在調試和發佈版本上嘗試過,結果相同。

回答

0

我不知道它的所有細節,但我懷疑NSApplication在它通過您的處理程序失敗之前攔截它。

+0

是的,應用程序主線程中的異常未被捕獲。 @theReverend,參見[Exception Programming Topics:Controlling a Program's Response to Exceptions](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Exceptions/Tasks/ControllingAppResponse.html)。 –

相關問題