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分

posted @ 2016-07-26 22:28  王彬iOS  阅读(1133)  评论(0编辑  收藏  举报