iOS 崩溃分析
2024-08-20 07:06:54
崩溃统计分析,在APP中是非常常见一种优化APP,发现APP的BUG的方式。
1.异常处理
可通过try catch 方式处理,如果发生异常,会走catch ,最终走fianlly。对一些我们不想他崩溃的地方,可以采取这种方式去处理。但要注意的是,通过这种处理,使用的第三方崩溃将捕捉不到异常信息,不会上报。
@try {
<#Code that can potentially throw an exception#>
} @catch (NSException *exception) {
<#Handle an exception thrown in the @try block#>
} @finally {
<#Code that gets executed whether or not an exception is thrown#>
}
2.异常信息打印与拦截
在开发过程中,我们想自己捕捉异常处理,那么,可以通过最简单的一种方式处理,直接在main.m中try catch,在catch中将数据先存在本地,隔一段时间或者APP进入后台时,上报给服务器。
main.m
@try {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
} @catch (NSException *exception) {
NSLog(@"main------%@", [exception callStackSymbols]);
}
但这种方式,个人感觉并不好。实际上,我们可以在AppDelegate.m中处理,在didFinishLaunchingWithOptions中设置异常回调,回调里面,处理相关的异常。
流程是:发生异常-->handleException-->main.h
void handleException(NSException *exception)
{
NSMutableDictionary *info = [NSMutableDictionary dictionary];
info[@"callStack"] = [exception callStackSymbols]; // 调用栈信息(错误来源于哪个方法)
info[@"name"] = [exception name]; // 异常名字
info[@"reason"] = [exception reason]; // 异常描述(报错理由)
} - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch. // 将沙盒中的错误信息传递给服务器 // 设置捕捉异常的回调
NSSetUncaughtExceptionHandler(handleException); return YES;
}
上面的方法都是对异常的一些分析以处理,实际开发中,我们一般都是使用第三方库记录和分析BUG。
崩溃分析统计
* 1.友盟
* 2.腾讯bugly
* 3.Flurry
* 4.Crashlytics
最新文章
- makefile小例子
- 使用 Google Guava 美化你的 Java 代码
- SecureCRT 终端仿真程序 v7.0.0.326 中文绿色便携破解版
- windows oid 利用SNMP获得主机信息(转)
- 消息摘要算法-HMAC算法
- POJ 1721 CARDS(置换群)
- C#实现的内存分页机制的一个实例
- Linux学习之查找命令find
- spring多个数据源配置
- 网站启用gzip压缩
- Java 中基本类型和字符串之间的转换
- UVA-10714 Ants---蚂蚁模拟
- mysql进阶(十二)常见错误汇总
- Leetcode_141_Linked List Cycle
- canvas实现黑客帝国矩形阵
- day 06 元组、字典、集合的定义及其方法
- HTTP 04 web 服务器
- HDU 3117 Fibonacci Numbers(矩阵)
- chmod修改权限
- 【内核】内核链表使用说明,list.h注释
热门文章
- String和datetime在SQL中和在C#中相互转换方法总结
- Vue SSR 配合Java的Javascript引擎j2v8实现服务端渲染2创建Vue2+webpack4项目
- 优化网站设计(九):减少DNS查找的次数
- 查询执行成本高(查询访问表数据行数多)而导致实例 CPU 使用率高是 MySQL 非常常见的问题
- CHARACTER SET
- iOS-原生纯代码约束总结(二)之 AutoLayout
- Boost 常用的库
- cxgridchart饼状图
- web.xml中 /和/*的区别
- python摸爬滚打之day06----小数据池、编码解码