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

来源:互联网 发布:cms系统需求文档 编辑:程序博客网 时间:2024/06/16 03:37

前言:

先简单的介绍一下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。

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

  1. 在用户APP抛出异常的时候,我们捕获到异常,并立即写入沙盒中。
  2. 当用户每次运行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里这样做统计分析了,大多都是用统计分析平台来做。下面安利给大家主流的三个崩溃统计平台

  1. 友盟
  2. Flurry
  3. Crashlytics

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

如有出错地方,请在博客回复中指出,谢谢各位看官。

0 0
原创粉丝点击