核心数据:错误与例外情况第2部分

时间:2010-01-07 22:44:24

标签: iphone objective-c debugging core-data nsexception

我的问题类似于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)捕获此异常。这一切都很奇怪。

1 个答案:

答案 0 :(得分:2)

我认为正在发生的事情是objc_exception_throw正在捕获核心数据中的内部异常,但它们确实没有渗透到我的应用程序中。因为我设置了合并策略,锁定失败转换为对象合并,一切都很好。

我应该也可以使用committedValuesForKeys:所以我可以看到异常之前发生的事情......这不会每次都发生。

相关问题