核心数据中的错误处理

时间:2008-11-17 21:57:25

标签: cocoa core-data error-handling

几个星期前,我开始在非平凡的应用程序中首次使用Core Data。令我感到惊讶和困惑的一件事是错误处理是如何工作的。举个例子,我尝试的第一件事就是在Finder中将我的数据文件设置为“已锁定”,以确保在设置文件URL时我正确处理了引用返回的NSError对象。令我惊讶的是,持久存储协调器不是返回nil并设置NSError,而是从底层NSData引发了一个未捕获的异常!

同时,核心数据中的错误处理似乎有点不必要。例如,我没有看到任何明显的原因,为什么获取请求需要在程序员错误之外进行错误处理(顺便说一句,在我的经验中也会引发异常)。在这些情况下,我一直在为NSError引用指针传递NULL。

在try / catch块和NSError之间,我可能会花很多时间编写代码来安抚Core Data,但是我想要实用它,所以我不会花时间在永远不会运行的错误代码上。考虑到这一点,您如何处理应用程序中的错误处理?您在现实世界中看到的哪些错误应该确保考虑到?

1 个答案:

答案 0 :(得分:2)

自1.4以来Apple一直采用的错误处理方向是NSError,因为应用程序应该知道的错误(如上所述)和编程错误的异常(应该永远不会超过QA)。

一般而言,您应该考虑这些准则。当您发现这样的问题时,您可以根据您找到的实际结果立即编写处理程序,但您也应该立即向Apple发布错误报告,因为这种模式与他们采用的模式相反。 / p>

您可以将错误报告发布到http://bugreport.apple.com/。您将需要一个ADC帐户,但您可以使用免费帐户发布错误报告。我发现它们对开发工具包中的错误以及类似的问题都非常敏感,框架的行为与其声明的设计模式相矛盾。