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

据说这段代码可以收集错误信息:

- (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);
     
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值