4

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

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

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

4

1 回答 1

2

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

通常,您应该牢记这些准则进行编程。当你发现这样的问题时,你现在可以根据你发现的实际结果编写一个处理程序,但你也应该立即向 Apple 发布错误报告,因为这种模式与他们采用的模式相反。

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

于 2008-11-17T23:34:18.203 回答