【问题标题】:Error handling in Core DataCore Data 中的错误处理
【发布时间】:2010-09-22 18:20:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: cocoa core-data error-handling


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是个好建议,但我真的希望能得到一些更实用的建议,说明我在使用真实的 Core Data 应用程序时最有可能遇到哪些错误。
    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2013-10-27
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-03-31
    相关资源
    最近更新 更多