2015-06-03 47 views
0

下面的代碼在捕獲UncaughtExceptions方面做得非常好 - 至少在iOS 8之前是如此。爲什麼在main.m中的@catch不會捕獲iOS中的UncaughtExceptions 8

int main(int argc, char * argv[]) 
{ 
    @try { 
     @autoreleasepool { 
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class])); 
     } 
    } 
    @catch (NSException *exception) { 
     [[MyExceptionHandler sharedInstance] handleException:exception]; 
    } 
} 

在iOS 7設備上運行相同的代碼,任何未捕獲的異常由main中的catch塊處理。但在iOS 8中,它根本沒有被捕獲。

如果我把這個代碼:

void onUncaughtException(NSException* exception) 
{ 
    [[MyExceptionHandler sharedInstance] handleException:exception]; 
} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    .... 
    NSSetUncaughtExceptionHandler(&onUncaughtException); 
} 

在我的AppDelegate,我可以捕獲所有異常預期。我只是想知道@ catch-in-main-approach在iOS 8中停止工作的原因是什麼(或者它可能與64位支持有關)?

問候,

基督教

回答

相關問題