IOS崩溃异常的处理
2015-11-18 15:11
357 查看
IOS崩溃异常的处理
会闪退的异常种类有:数组越界、空引用、引用未定义方法、内存空间不足等等。以下是对APP进行异常监听的处理方法:
1、在AppDelegate的didFinishLaunchingWithOptions方法中添加异常捕获监听
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//加上异常捕获监听,用来处理程序崩溃时的回调动作,UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
}
2、在AppDelegate.m中实现UncaughtExceptionHandler方法,此处处理异常有两种方法,第一种是保存在本地文件(下次启动时可查看),第二种是将异常崩溃信息发送至开发者邮箱
#pragma mark - 崩溃异常处理方法
void UncaughtExceptionHandler( NSException *exception){
NSArray *arr=[exception callStackSymbols];//得到当前调用栈信息
NSString *reason=[exception reason];//获取崩溃的原因
NSString *name=[exception name];//异常名称
NSString *exceptionInfo=[NSString stringWithFormat:@"Exception type:%@ \n crash reason:%@ \n call stack info:%@",name,reason,arr];
NSLog(@"崩溃异常打印:%@",exceptionInfo);
// //异常处理方法一:将异常保存在本地文件中,下次启动的时候,可以查看
// NSMutableArray *tmpArr=[NSMutableArray arrayWithArray:arr];
// [tmpArr insertObject:reason atIndex:0];
// [exceptionInfo writeToFile:[NSString stringWithFormat:@"%@/Documents/error.log",NSHomeDirectory()] atomically:YES encoding:NSUTF8StringEncoding error:nil];
//异常处理方法二:将异常崩溃信息发送至开发者邮箱
NSMutableString *mailUrl=[NSMutableString string];
[mailUrl appendString:@"mailto:593206782@qq.com"];
[mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"];
[mailUrl appendFormat:@"&body=%@",exceptionInfo];
//打开地址
NSString *mailPath=[mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}
会闪退的异常种类有:数组越界、空引用、引用未定义方法、内存空间不足等等。以下是对APP进行异常监听的处理方法:
1、在AppDelegate的didFinishLaunchingWithOptions方法中添加异常捕获监听
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//加上异常捕获监听,用来处理程序崩溃时的回调动作,UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
}
2、在AppDelegate.m中实现UncaughtExceptionHandler方法,此处处理异常有两种方法,第一种是保存在本地文件(下次启动时可查看),第二种是将异常崩溃信息发送至开发者邮箱
#pragma mark - 崩溃异常处理方法
void UncaughtExceptionHandler( NSException *exception){
NSArray *arr=[exception callStackSymbols];//得到当前调用栈信息
NSString *reason=[exception reason];//获取崩溃的原因
NSString *name=[exception name];//异常名称
NSString *exceptionInfo=[NSString stringWithFormat:@"Exception type:%@ \n crash reason:%@ \n call stack info:%@",name,reason,arr];
NSLog(@"崩溃异常打印:%@",exceptionInfo);
// //异常处理方法一:将异常保存在本地文件中,下次启动的时候,可以查看
// NSMutableArray *tmpArr=[NSMutableArray arrayWithArray:arr];
// [tmpArr insertObject:reason atIndex:0];
// [exceptionInfo writeToFile:[NSString stringWithFormat:@"%@/Documents/error.log",NSHomeDirectory()] atomically:YES encoding:NSUTF8StringEncoding error:nil];
//异常处理方法二:将异常崩溃信息发送至开发者邮箱
NSMutableString *mailUrl=[NSMutableString string];
[mailUrl appendString:@"mailto:593206782@qq.com"];
[mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"];
[mailUrl appendFormat:@"&body=%@",exceptionInfo];
//打开地址
NSString *mailPath=[mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}
相关文章推荐
- iOS学笔记本45- TTTAttributedLabel 使用方法
- iOS开发库的列表
- 实现iOS7以前的TableViewGroupStyle的方法。
- iOS viewDidLayoutSubviews,viewdidload
- 苹果开发者账号申请流程--企业
- iOS审核秘籍:应用内容检查大法
- IOS6和IOS7的适配问题
- iOS应用发布中的一些细节
- iOS开发代码自动布局NSLayoutConstraint
- iOS GCD创建标准定时器,进入后台后任可继续定时,无需开启后台任务
- 利用NSCache提升效率
- iOS ---对json数组的解析
- nagios_client_V2_sh
- iOS: Crash文件解析
- IOS-使用系统默认声音、震动
- iOS开发 -- 添加自定义ttf字体的方法
- iOS菜鸟之苹果开发者账号的注册
- 自定义iOS下拉框
- iOS开发:为xcode项目添加git仓储
- IOS学习之__FUNCTION__的作用