几个星期前,我开始在一个非平凡的应用程序中首次使用Core Data.令我感到惊讶和困惑的一件事是错误处理是如何工作的.举个例子,我尝试的第一件事就是在Finder中将我的数据文件设置为“已锁定”,以确保在设置文件URL时我正确处理了引用返回的NSError对象.令我惊讶的是,持久存储协调器不是返回nil并设置NSError,而是从底层NSData引发了一个未捕获的异常!
同时,Core Data中的错误处理似乎有点不必要.例如,我没有看到任何明显的原因,为什么获取请求需要在程序员错误之外进行错误处理(顺便说一句,在我的经验中也会引发异常).在这些情况下,我一直在为NSError引用指针传递NULL.
在try / catch块和NSError之间,我可能会花很多时间编写代码来安抚Core Data,但我想要实用它,所以我不会花时间在永远不会运行的错误代码上.考虑到这一点,您如何处理应用程序中的错误处理?您在现实世界中应该确定哪些错误应该考虑到?
最佳答案 Apple自1.4以来一直采用的错误处理方向是NSError,因为应用程序应该知道的错误(如上所述)和编程错误的异常(应该永远不会超过QA).
一般而言,您应该考虑这些准则.当您发现这样的问题时,您可以根据您找到的实际结果立即编写处理程序,但您也应该立即向Apple发布错误报告,因为这种模式与他们采用的模式相反.
您可以将错误报告发布到http://bugreport.apple.com/.您将需要一个ADC帐户,但您可以使用免费帐户发布错误报告.我发现它们对开发工具包中的错误以及类似的问题非常敏感,其中框架的行为与其声明的设计模式相矛盾.