例外をもう少し理解しようとしています。AppDelegateにキャッチされない例外ハンドラーをインストールしました。
// in applicationDidFinishLaunching:
NSSetUncaughtExceptionHandler(&HandleExceptions);
...
void HandleExceptions(NSException *exception) {
// Save application data on crash
[appDelegate saveData];
}
ですから、これがどのように機能するのか完全にはわかりません。範囲外の配列にアクセスすると、例外がスローされます。このメソッドが呼び出されないのはなぜですか?または、テーブルに行を挿入または削除した後にスローされたアサーション例外があると言います-そのような状況でアプリがクラッシュする前にデータを保存するにはどうすればよいですか?
一般に、システムが例外をスローした場合、アプリがクラッシュする前にデータを保存するにはどうすればよいですか?それともそのようには機能しませんか?キャッチされなかった例外ハンドラーは、@ catchまたは@tryにラップされていない、スローした例外に対してのみですか?