利用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
当然,友盟是国产,下面两个是国外的。英语八级可以考虑下面两个~~~~
如有出错地方,请在博客回复中指出,谢谢各位看官。
相关文章推荐
- iOS CocoaPods安装和使用
- IOS开发 - Info.plist跟pch文件的作用
- ios互斥锁,线程同步
- IOS开发-读取xib文件
- IOS学习之——ViewController之间双向传值(反向为代理模式)
- IOS学习之——ViewController之间正向传值
- iOS 开发 Pch 文件的正确使用
- 【iOS】代码片段库
- 不是行业饱和了,是你对行业不饱和
- iOS中宏定义的使用与规范
- iOS开发中设置圆角的方法
- iOS 谓词
- 谓词的使用(predicate)
- 个人常用iOS第三方库以及XCode插件介绍
- iOS 顶部几个按钮切换界面代码
- iOS 十六进制颜色转RGB颜色
- IOS中XML解析
- iOS CocoaPods安装和使用图解
- iOS学习笔记29-系统服务(二)通讯录
- iOS学习笔记29-系统服务(二)通讯录