您的位置:首页 > 移动开发 > IOS开发

利用IOS的异常处理机制来做崩溃统计分析

2016-04-16 11:26 411 查看

前言:

先简单的介绍一下IOS中对异常的一些处理

抛出异常:

@throw //后面写出异常后执行的操作

利用NSException的两个类方法

+ (void)raise:(NSString *)name format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3);
+ (void)raise:(NSString *)name format:(NSString *)format arguments:(va_list)argList NS_FORMAT_FUNCTION(2,0);


正文

在我们APP的开发中,当时时常也会遇到程序运行后,异常的错误(报错是红色,异常是绿色)。但是在真机模拟中,如果有异常,APP就直接崩溃了,也就是我们说的闪退。当产品上线后,为了更好的收集用户的崩溃信息,提供给用户更好的用户体验。我们就要收集APP的崩溃信息来做数据统计,以便下一次更新迭代来修复BUG。

那么我们怎么来做到这个崩溃统计呢,其实主要分两步

在用户APP抛出异常的时候,我们捕获到异常,并立即写入沙盒中。

当用户每次运行APP时,我们将这个收集到的异常文件发送至服务器。

我们通常将这一步放在AppDelegate中。因为这样可以获取到全局的崩溃信息,其次每次程序启动都会进入到AppDelegate的这个方法中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

return YES;

}


下面看具体代码及介绍

//每次一捕捉到异常,这个函数将被调用
void handlerException (NSException *Exception) {
NSMutableDictionary *info = [NSMutableDictionary dictionary];

info[@"callStackSymbols"] = [Exception callStackSymbols]; //调用栈信息
info[@"name"] =   [Exception name];             //报错名称
info[@"reason"] = [Exception reason];             //报错名称
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
NSString *path = [[pathArray lastObject] stringByAppendingString:@"Exception.txt"];
[info writeToFile:path atomically:YES];
}

1. (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

//这里在捕捉异常信息,一旦捕捉到就调用handlerException方法
NSUncaughtExceptionHandler(handlerException);

//  这里可以做一些文件上传的数据操作
//  在此就不多做赘述了
//
//
//

return YES;
}


当然现在大部分都不在APP里这样做统计分析了,大多都是用统计分析平台来做。下面安利给大家主流的三个崩溃统计平台

友盟

Flurry

Crashlytics

当然,友盟是国产,下面两个是国外的。英语八级可以考虑下面两个~~~~

如有出错地方,请在博客回复中指出,谢谢各位看官。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: