前言:
先简单的介绍一下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
当然,友盟是国产,下面两个是国外的。英语八级可以考虑下面两个~~~~
如有出错地方,请在博客回复中指出,谢谢各位看官。