crash率是衡量产品质量的指标之一,所以SDK需要有捕获crash的能力。
ios中存在很多类型的crash,今天介绍一种最简单的crash类型,NSException。NSException通常由数组越界、字典没有Key等原因引起。NSException的捕获可以使用NSSetUncaughtExceptionHandler函数,将exception抛给处理函数进行处理,通过exception 的 name , reason 和 callStackSymbols等信息即可定位该exception发生的场景。如下所示:
void HandleException(NSException *exception)
{
[[LLCrashHelper sharedHelper] saveException:exception];
//将crash的有用信息转换成字典
NSDictionary *crashInfo = [NSDictionary dictionaryWithObjectsAndKeys:exception.name, @"name",
exception.reason,@"reason",
exception.callStackSymbols,@"stack",nil] ;
[[LLDebugTool sharedTool] uploadBugWithDict:crashInfo exceptionType:CRASH files:nil takeScreenshot:NO complete:^(BOOL result,NSString* zipPath) {
if(result){
NSLog(@"上传bug成功");
[[NSFileManager defaultManager] removeItemAtPath:zipPath error:nil];
};
} synchronous:YES] ;
[exception raise];
}
本文介绍如何在iOS应用中捕获NSException类型的crash,通常由数组越界、字典无Key等问题引发。通过NSSetUncaughtExceptionHandler设置异常处理器,获取exception的name、reason和callStackSymbols等信息,进而定位crash场景,并将相关信息打包为字典上传至服务器。
1196

被折叠的 条评论
为什么被折叠?



