uncaghtexceptionhandler和@try@catch异常捕获
错误实际是生命中一个事实,即便最完美的程序员,也有会 运行时产生错误的代码,本文和大家一起交流这样的情况。
我们通常会遇到两种错误:编译时的错误和运行是的错误,编译是的错误是那些由编译器引发的错误,并且,我们必须在继续供工作之前修正这些错误。运行时错误发生在程序运行时,即便代码已经很好地编译。运行时的错误通常叫异常。
此处值得注意的是,异常捕获无法捕获c语言的异常,如果你要捕获的代码是c语言,那么对不起,本文方法不支持.
好了,上面都是废话,下面直接上代码:
一,本文主要介绍利用uncaghtexceptionhandler异常捕获的步骤:
首先在你想要出现错的方法中添加代码:
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
如:AppDelegate.m中
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
}
再实现你的方法:(调用的都是系统封装好的方法,只需要把字符串做些处理即可)
如:
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"]];
SVError (@"%@", content);
}
二,本文还介绍一种捕获异常的方法就是@try@catch
@try
{
//你想要知道如果错误会捕获的地方
}
@catch (NSException *exception)
{
//捕获的错误信息
SVError (@"stop play video fail. %@", exception);
}
好了说完了,希望对你在写iOS程序时有帮助,如果再有问题可以给我发邮件,大家共同讨论共同进步.
越分享越快乐,王彬,2016年7月26日下午10点26分