iOS收集未捕获的异常,防止应用crash

来源:互联网 发布:三大中文数据库的认识 编辑:程序博客网 时间:2024/04/29 20:13
据说这段代码可以收集错误信息:
- (void)redirectTNLogToDocumentFolder{    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);    NSString *documentsDirectory = [paths objectAtIndex:0];    NSString *fileName =@"TaoLan.log";    NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];    NSString *contents = [[NSString alloc] initWithContentsOfFile:logFilePath encoding:NSUTF8StringEncoding error:nil];    NSRange range1 = [contents rangeOfString:@"Terminating app due to uncaught exception"];    NSRange range2 = [contents rangeOfString:@"message sent to deallocated instance"];        if (range1.length > 0 || range2.length > 0) {        NSString *contents1 = [contents stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%c",'\n'] withString:@"<br />"];        if (contents1 && [contents1 length] > 10) {            NSString * bundleVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];            NSString * displayName     = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];            NSString *contents2 = [[NSString alloc] initWithFormat:@"BUG监听报告:<br />手机型号: %@ , 版本: %@ <br />程序名称: %@, 版本:%@<br /> 用户: %d<br /> %@", [[UIDevice currentDevice] systemName], [[UIDevice currentDevice] systemVersion], displayName, bundleVersion, taonanApi.currentUserId, contents1];            [taonanApi updatelog:contents2];            [contents2 release];        }    }    [contents release];    freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"w",stderr);     }

0 0