2013-01-11 75 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]; 
相关问题