Я пытаюсь поймать исключения в своем приложении 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