2013-01-11 109 views
3

在我的應用程序中引發異常,我試圖在此處理它。意圖是打電話給我們的服務器,這是不成功的。我已經在try/catch語句中隔離了服務器調用,以查看是否引發了另一個異常,但從我的日誌中可以看到沒有引發額外的異常。是否有可能從異常處理程序發送Web請求或由於某種原因導致進程中斷?iOS - 在異常處理程序中發送Web請求失敗

void uncaughtExceptionHandler(NSException *exception) { 
    [Flurry logError:@"Uncaught" message:@"Crash!" exception:exception]; 
    NSLog(@"Exception: %@", exception); 
    NSArray *stack = [exception callStackReturnAddresses]; 
    NSLog(@"Stack trace: %@", stack); 
    NSString *stackTrace = [stack description]; 
    @try { 
     NSString *domain = @"blabla.mydomain.com"; 
     NSURL *url2 = [NSURL URLWithString: [NSString stringWithFormat: @"http://%@/error/SendExceptionDetailsToStaff", domain]]; 
     ASIFormDataRequest *request2 = [ASIFormDataRequest requestWithURL:url2]; 
     [request2 setPostValue: stackTrace forKey:@"stackTrace"]; 
     [request2 setPostValue: [[UIDevice currentDevice] model] forKey:@"device"]; 
     [request2 setPostValue: [[UIDevice currentDevice] systemVersion] forKey:@"osVersion"]; 
     [request2 startAsynchronous];  
    } 
    @catch (NSException * e) { 
     NSLog(@" Request Exception: %@", e); 
    } 
    NSLog(@"yooooo"); 
} 


log: 
2013-01-10 15:16:20.761 myApp[4653:c07] Stack trace: (0x28fa012 0x1b6ce7e 0x2982fb1 0x8c601 0xc1f753 0xc1fa7b 0xc2d590 0xc355bd 0xc35eab 0xc35fc9 0xc36055 0xd3b3ab 0xb8c92d 0x1b806b0 0x7409fc0 0x73fe33c 0x73fe150 0x737c0bc 0x737d227 0x737d8e2 0x28c2afe 0x28c2a3d 0x28a07c2 0x289ff44 0x289fe1b 0x2b327e3 0x2b32668 0xb3c65c 0x216d 0x20a5) 
2013-01-10 15:16:20.761 myApp[4653:c07] yooooo 
+0

你確定'stackTrace!= nil'嗎? –

回答

1

最終解決了我自己的問題。問題在於異步Web請求在完成之前會被中斷。使其同步並保持在同一線程可解決問題。

[request2 startSynchronous]; 
相關問題