3

我的应用程序中引发了异常,我正在尝试在这里处理它。目的是调用我们的服务器,但没有成功。我已经在 try/catch 语句中隔离了服务器调用,以查看是否引发了另一个异常,但正如您从我的日志中看到的那样,没有引发其他异常。是否可以从异常处理程序发送 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
4

2 回答 2

1

最终解决了我自己的问题。问题是异步 Web 请求在完成之前会被中断。使其同步并保持在同一个线程上可以解决问题。

[request2 startSynchronous];
于 2013-01-12T00:11:14.123 回答
0

尝试设置异常断点(此处的说明:http: //developer.apple.com/library/ios/#recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html) - 您应该得到更具描述性的调试消息。

于 2013-01-11T00:11:19.357 回答