在开发APP的时候我们通常需要捕获异常防止应用崩溃,下面我讲一下我是怎么捕获异常的
使用@try、catch捕获异常
@try {
// 可能会出现崩溃的代码
}
@catch (NSException *exception) {
// 捕获到的异常exception
}
@finally {
// 结果处理
}
有时候崩溃我们是无法避免的,因此我们可以在程序崩溃之前做一些“动作”(收集错误信息),下面的例子是把捕获到的异常发送至开发者的邮箱。(来自GarveyCalvin的博客)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
return
YES;
}
void UncaughtExceptionHandler(NSException *exception) {
/**
* 获取异常崩溃信息
*/
NSArray *callStack = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSString *content = [NSString stringWithFormat:@
"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@"
,name,reason,[callStack componentsJoinedByString:@
"\n"
]];
/**
* 把异常崩溃信息发送至开发者邮件
*/
NSMutableString *mailUrl = [NSMutableString string];
[mailUrl appendString:@
"mailto:test@qq.com"
];
[mailUrl appendString:@
"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"
];
[mailUrl appendFormat:@
"&body=%@"
, content];
// 打开地址
NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}
|