在入口类方法中调用函数捕捉程序异常行为:代码如下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// //捕获异常的方法为C函数
NSSetUncaughtExceptionHandler(&getException);
return YES;
}
捕获异常的方法,如下所示:
//C函数
void getException(NSException * exception)
{
/*需要记录错误原因,并且返回到服务器
1,知道设备版本
2,崩溃日期*/
//设备类型 iPhone/iPhone6/iPhone6 Plus/iPad......
NSString * model=[[UIDevice currentDevice]model];
NSLog(@"model--%@",model);
//设备版本
NSString * version=[[UIDevice currentDevice]systemVersion];
NSLog(@"version--%@",version);
//异常出现日期
NSDate * date=[NSDate date];
//崩溃的详细内容(名称,原因,信息,栈内存地址,详细集合)
NSLog(@"%@",exception.name);//异常名称
NSLog(@"%@",exception.reason);//异常原因
NSLog(@"%@",exception.userInfo);//异常信息
NSLog(@"%@",exception.callStackReturnAddresses);//异常的栈内存地址
NSLog(@"%@",exception.callStackSymbols);//异常详细集合
//获取到异常以后,可以立即发送至服务器,考虑到节省用户流量的问题,也可以先保存在本地,然后定期发送给服务器
//记录到本地
// @"123" writeToFile: atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>
//从本地获取,发送至服务器
}
网友评论