ios异常捕获
来源:互联网 发布:淘宝上有哪些网红店铺 编辑:程序博客网 时间:2024/06/05 18:22
今天弄了一个之前没有弄过的功能,捕获app的异常,虽然不难,但还是想记录一下。
第一步、在哪里捕获
当然是在你出错的控制器里捕获,如果你想全局捕获,那你就把捕获方法写在你的根控制器里,比如BaseViewController.m里面
第二步、如何捕获
两段代码,代码量很少哒
第一处:写在ViewDidLoad里面
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
刚刚那句的意思就是添加一个捕获异常的监控的东西
第二处:写在外面,就是实现刚刚那个括号里的方法
void UncaughtExceptionHandler(NSException *exception) { NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息 NSString *reason = [exception reason];//非常重要,就是崩溃的原因 NSString *name = [exception name];//异常类型 NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr); NSString *errorinfo = [NSString stringWithFormat:@"异常类型: %@ 闪退原因 : %@ 闪退进程: %@", name, reason, arr ]; NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults]; [accountDefaults removeObjectForKey:KAppErrorInfo]; [accountDefaults setObject:errorinfo forKey:KAppErrorInfo];}
上面就是如果你程序崩了的时候会调用的方法,里面可以捕获到异常最主要的信息了。
注意
你如果捕获到异常,想要把错误信息传给服务器,那是不可能的,因为你调不能接口的,所以,你只能等下次程序启动的时候再把上次崩掉的报错日志上传给服务器,So,你一定要在捕获崩溃的方法里把上次的错误信息保存为全局的,就是用NSUserDefaults这货来保存。
蓝后:
你可以在AppDelegate.m里面加上如下代码:
NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults]; NSString *errorinfo = [accountDefaults objectForKey:KAppErrorInfo]; if(!(errorinfo==nil)){ [AccountModel UploadErrorInfo:errorinfo type:@"03"]; }
酱紫,你就可以在启动的时候获取到上次你程序crash的错误日志啦。
吼吼吼,今天枫子酱就哆嗦这么多啦,纯属自个儿记录哒。
0 0
- iOS异常捕获相关
- ios捕获异常
- iOS 异常捕获
- iOS之捕获异常
- ios 程序异常捕获
- ios异常捕获
- ios 捕获异常
- iOS异常捕获
- ios异常捕获
- iOS捕获应用异常
- iOS 异常捕获学习
- iOS异常捕获
- iOS异常捕获
- iOS捕获异常代码
- iOS 捕获系统外异常
- IOS 捕获异常工具UncaughtExceptionHandler
- iOS 捕获系统外异常
- iOS 捕获系统外异常
- 演示-JQuery中伪元素和伪类选择器
- 演示-联合选择器和反选择器
- 实现网络爬虫思路
- oracle存储过程、声明变量、for循环
- 表单验证设计的用户体验基本原则
- ios异常捕获
- jQuery-理解选择结果
- PL/SQL中decode函数简介
- jQuery-编辑选择结果(添加、筛选、过滤或检测)
- jquery-根据现有结果集得到另一个结果集(后代、祖先或兄弟元素)
- mybatis-generator扩展教程系列 -- 自定义generatorConfig.xml参数
- jquery-修改、回退结果集
- git查看本地和创建分支、上传分支、提交代码到分支、删除分支等
- 文献阅读笔记——road segmention(一)