Мой вопрос похож на этот , но мне нужны дополнительные разъяснения. Я часто получаю исключения во время такого кода:
NSError* error;
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
}
Однако, когда я ставлю точку останова в objc_exception_throw
, я могу обнаружить, что исключение выдается в save
:
(gdb) po [$eax name]
NSInternalInconsistencyException
(gdb) po [$eax description]
optimistic locking failure
Я бы не ожидал этого, поскольку документы говорят, что сбой оптимистической блокировки вернет ошибку, а не исключение.
Кроме того, я даже не могу поймать это исключение с @try ... @catch (NSException * e)
в коде. Это все странно.