我试图更多地理解异常。我在我的 AppDelegate 中安装了一个未捕获的异常处理程序:
// in applicationDidFinishLaunching:
NSSetUncaughtExceptionHandler(&HandleExceptions);
...
void HandleExceptions(NSException *exception) {
// Save application data on crash
[appDelegate saveData];
}
所以我不完全确定这是如何工作的。假设我访问一个数组越界,这会引发异常。为什么不调用此方法?或者说在从表中插入或删除行后抛出了一个断言异常——在这些情况下,如何在应用程序崩溃之前保存数据?
一般来说,当系统抛出异常时,我如何有机会在应用程序崩溃之前保存数据?或者它不是那样工作的?未捕获的异常处理程序是否仅适用于我抛出的未包含在@catch 或@try 中的异常?