在入口類方法中調(diào)用函數(shù)捕捉程序異常行為:代碼如下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// //捕獲異常的方法為C函數(shù)
NSSetUncaughtExceptionHandler(&getException);
return YES;
}
捕獲異常的方法,如下所示:
//C函數(shù)
void getException(NSException * exception)
{
/*需要記錄錯誤原因,并且返回到服務(wù)器
1,知道設(shè)備版本
2,崩潰日期*/
//設(shè)備類型 iPhone/iPhone6/iPhone6 Plus/iPad......
NSString * model=[[UIDevice currentDevice]model];
NSLog(@"model--%@",model);
//設(shè)備版本
NSString * version=[[UIDevice currentDevice]systemVersion];
NSLog(@"version--%@",version);
//異常出現(xiàn)日期
NSDate * date=[NSDate date];
//崩潰的詳細(xì)內(nèi)容(名稱,原因,信息,棧內(nèi)存地址,詳細(xì)集合)
NSLog(@"%@",exception.name);//異常名稱
NSLog(@"%@",exception.reason);//異常原因
NSLog(@"%@",exception.userInfo);//異常信息
NSLog(@"%@",exception.callStackReturnAddresses);//異常的棧內(nèi)存地址
NSLog(@"%@",exception.callStackSymbols);//異常詳細(xì)集合
//獲取到異常以后,可以立即發(fā)送至服務(wù)器,考慮到節(jié)省用戶流量的問題,也可以先保存在本地,然后定期發(fā)送給服務(wù)器
//記錄到本地
// @"123" writeToFile: atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>
//從本地獲取,發(fā)送至服務(wù)器
}