Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios try catch和NSSetUncaughtExceptionHandler之间的差异_Ios_Iphone_Exception_Nsexception - Fatal编程技术网

Ios try catch和NSSetUncaughtExceptionHandler之间的差异

Ios try catch和NSSetUncaughtExceptionHandler之间的差异,ios,iphone,exception,nsexception,Ios,Iphone,Exception,Nsexception,我尝试了两种捕获异常的方法。第一个是try-catch,第二个是Appdelegate中的以下代码 void onUncaughtException(NSException* exception) { //save exception details } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSSetUnca

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

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSSetUncaughtExceptionHandler(&onUncaughtException);
}
第二种方法的优点是我们不需要在每个方法中实现try-catch块。


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

是否有任何方法可以使用第二种方法捕获异常而不使应用程序崩溃。

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

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