Ios try catch和NSSetUncaughtExceptionHandler之间的差异
我尝试了两种捕获异常的方法。第一个是try-catch,第二个是Appdelegate中的以下代码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
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…
不会最终导致崩溃,这可能是主要区别