【发布时间】:2014-01-26 00:01:17
【问题描述】:
这是一个关于处理未使用 NSError 的可能错误的一般问题。
假设我们有一些像这样的典型 iOS/Cocoa 代码:
NSXMLParser *parser = [[NSXMLParser alloc] initWithData: myData];
文档声明将返回一个 NSXMLParser 对象,或者“如果发生错误则为零”。
(为了记录,这个特定的方法很乐意将 nil 作为 'data' 参数,返回一个有效的 NSXMLParser 实例。)
我注意到很多 iOS 开发人员从不检查这些类型的返回值。他们假设类 init 一直有效。我觉得这很冒险,但我想听听经验丰富的 Cocoa 开发人员的意见。
如果我在返回值上使用 NSAssert,这可以在开发过程中保护我,但当我的应用程序在野外使用时对我几乎没有什么作用。
我应该检查 nil 返回值,并自己构造一个 NSError 吗?还是做点别的?
【问题讨论】:
-
@Bryan,这就是我要问的。你会如何处理这个特定的错误?
-
我将只使用 NSAssert 来检查它是否不为零。如果发生错误,我将得到 nil 解析器并且不会完成任何工作。希望这是我能得到的最好的。
-
@Abizern,如果你用谷歌搜索那行代码,你会发现很多结果。绝大多数实现都没有检查返回值。这可能只是因为示例/片段实现,但我怀疑一般方法是相同的。但是,如果您想与我们分享您的方法,我很乐意倾听。
-
不知道为什么你在这里被否决......我认为这是一个关于最佳实践的好问题。 (我认为问题是苹果真的没有,或者他们不关注他们,他们的错误不断通过QA。所以苹果范博伊在跟随人群时并不知道更好)。
标签: ios cocoa error-handling nserror