【问题标题】:Difference between try catch and NSSetUncaughtExceptionHandlertry catch 和 NSSetUncaughtExceptionHandler 的区别
【发布时间】:2014-04-14 12:44:51
【问题描述】:

我尝试了两种捕获异常的方法。第一个是 try catch,第二个是 Appdelegate 中的以下代码。

void onUncaughtException(NSException* exception)
{
//save exception details
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSSetUncaughtExceptionHandler(&onUncaughtException);
}

第二种方法的优点是我们不需要在每个方法中都实现 try catch 块。

第一个捕获异常并打印它,但不会使应用程序崩溃。但第二个捕获异常并使应用程序崩溃。

有没有办法使用第二种方法来捕获异常而不会使应用程序崩溃。

【问题讨论】:

    标签: ios iphone exception nsexception


    【解决方案1】:

    NSSetUncaughtExceptionHandler 设置顶级错误处理函数,您可以在该函数中在程序终止前执行最后一分钟的日志记录。在onUncaughtException 中,您可以在崩溃前做一些事情,但应用程序最终会崩溃。

    @try...@catch...@finally..是尝试捕捉可能的NSException,如果catch,则运行在@catch块代码中,无论是否catch,代码都会运行在@finally块代码中。使用@try...@catch...最终不会导致崩溃,这可能是主要区别。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2010-12-14
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2017-08-07
      • 2011-01-17
      相关资源
      最近更新 更多