在为iphone编写API时,错误处理的最佳实践是什么?

时间:2010-03-30 15:03:56

标签: iphone objective-c error-handling

我们正在为iphone开发人员编写API,我们不知道异常处理的最佳实践是什么。我们研究了NSError,标准POSIX方式,NSException

大多数API使用的约定是什么?哪个是“Objective-C友好”?

2 个答案:

答案 0 :(得分:14)

来自Introduction to Exception Programming Topics

  

重要:您应该保留使用异常进行编程或意外的运行时错误,例如越界收集访问,尝试改变不可变对象,发送无效消息以及丢失连接到窗口服务器。在创建应用程序时而不是在运行时,通常会使用异常处理这些类型的错误。

...

  

而不是异常,错误对象(NSError)和Cocoa错误传递机制是在Cocoa应用程序中传达预期错误的推荐方法。有关详细信息,请参阅Error Handling Programming Guide For Cocoa

据我了解,只有在出现致命错误时才使用例外。否则,请使用NSError个对象。

答案 1 :(得分:2)

+1 NSError

我忘记了Apple文档中我读到的内容,但我也记得它们鼓励编写“先尝试然后检查错误”的编码理念,而不是“检查有效性,然后再进行操作”。例如,在使用网络之前,不要看网络是否可用,只要尝试使用它,如果/什么时候回来就会响应错误。

我同意许多用例的这一理念,因为(a)它将有效性检查移动到行动的那一刻,所以在某种意义上它更准确,并且(b,主观)在这个中使用代码更有趣图案。

总结一下,建议使用NSError,并提供接受NSError**的{​​{1}}参数的即时反馈,以便对您的API用户非常友好!这种模式也在Cocoa / Touch的几个地方建立;例如NULL方法writeToFile:atomically:encoding:error: