try catch和NSSetUncaughtExceptionHandler之间的区别

Man*_*ano 5 iphone exception nsexception ios

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

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSSetUncaughtExceptionHandler(&onUncaughtException);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

sim*_*one 5

NSSetUncaughtExceptionHandler设置顶级错误处理函数,您可以在程序终止之前执行最后一分钟的日志记录.在onUncaughtException你可以做飞机坠毁前的东西,但应用程序崩溃做最后.

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