写iPhone API时的错误处理最佳实践是什么?

11
我们正在为 iPhone 开发者编写一个 API,但我们不知道最佳的异常处理实践是什么。我们研究了 NSError、标准的 POSIX 方法以及 NSException
大多数 API 使用的惯例是什么?哪种方法对 "Objective-C" 最友好?

这个问题可能是 https://dev59.com/9HI_5IYBdhLWcg3wJfkM 和 https://dev59.com/pUvSa4cB1Zd3GeqPgKqv 的重复。 - Brad Larson
2个回答

14

根据异常编程主题介绍

  

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

...

  

在Cocoa应用程序中,代替异常,建议使用错误对象(NSError)和Cocoa错误传递机制来传达预期的错误。有关更多信息,请参见Cocoa错误处理编程指南

所以我理解的是,只有在出现严重的问题时才使用异常。否则,请使用NSError对象。


2

+1 for NSError.

我记不清在苹果文档的哪个部分看到过这个,但我还记得他们鼓励编码哲学是“先尝试,然后检查错误”,而不是“检查有效性,然后执行操作”。例如,与其在使用网络之前检查网络是否可用,不如尝试使用并在收到错误时做出回应。

我同意这种哲学在许多用例中很有用,因为 (a) 它将有效性检查移动到操作时刻,从某种意义上说更准确,(b,主观的) 它以这种模式工作更加有趣。

总之,建议是使用NSError,并提供接受nullNSError **参数以立即反馈,这样可以使API用户更友好!这种模式也在Cocoa/Touch的几个地方得到了确定;例如,NSString方法writeToFile:atomically:encoding:error:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接