try catch和NSSetUncaughtExceptionHandler之间的区别

时间:2014-03-11 04:47:07

标签: ios iphone exception nsexception

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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