私は自分のMacアプリケーションで例外をキャッチしてカスタムログファイルに記録できるようにしようとしています。未知の例外ハンドラが呼び出されていない
void uncaughtExceptionHandler(NSException *exception) {
NSLog(@"It Works!");
}
そして、私はこのように私の-applicationDidFinishLaunching:
方法でそれを設定しています:私はこのような例外ハンドラを実装しています
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
は、その後、私はこのようにそれをテストするために、例外が発生:
[[NSArray arrayWithObject:@"object"] objectAtIndex:1];
例外はコンソールに記録されますが、例外ハンドラは呼び出されていません。
アイデア?
私はそれを試みましたが、私はまだ例外をキャッチしていません。 '-reportException:'は決して呼び出されません。 '-applicationDidFinishLaunching:'で例外が発生した場合は、呼び出さないでください。メインスレッドで実行されていませんか? – edc1591
はい、 '-applicationDidFinishLaunching:'はメインスレッドで呼び出されます。 'NSApplication'サブクラスが使用されていますか?あなたは 'Info.plist'の中でクラス名をキー' NSPrincipalClass'の下に指定する必要があります。 –
はい、私は確信しています。 '[NSApp class];'は私のサブクラスを返します。 – edc1591