我的问题类似于this one,但我需要进一步澄清。我经常在这样的代码中得到例外:
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
我不希望这样,因为docs表示乐观锁定失败会返回错误,而不是例外。
顺便说一句,我甚至无法在代码中使用@try ... @catch (NSException * e)
捕获此异常。这一切都很奇怪。
答案 0 :(得分:2)
我认为正在发生的事情是objc_exception_throw
正在捕获核心数据中的内部异常,但它们确实没有渗透到我的应用程序中。因为我设置了合并策略,锁定失败转换为对象合并,一切都很好。
我应该也可以使用committedValuesForKeys:
所以我可以看到异常之前发生的事情......这不会每次都发生。