我正在编写一个包含一些核心基础Web功能的API,它可以返回许多可能的错误条件。我正在努力决定处理API使用者应该处理的错误条件的最佳方法(例如网络超时,接收意外结果,格式错误的XML等)。我提出了3种不同的型号,但不确定使用哪种型号:
如果方法takeAction
的对象没有返回任何值,我应该通过以下方法处理方法中的错误:
将方法写为- (BOOL)takeAction:(NSError **)error
,以便使用者知道方法成功或失败,并可以检查错误对象以确定原因,
将方法写为- (BOOL)takeAction
,以便消费者再次知道方法是成功还是失败,然后可以调用- (NSError *)getLastError
来确定方法失败的原因,或
将其写为- (void)takeAction
并发布通知,以便消费者可以订阅通知并在通知的userInfo字典中传递NSError对象?
哪个更好?
答案 0 :(得分:6)
我会使用方法编号1.这是Apple在其API中常用的功能,例如保存文件等。此方法的好处是能够快速查看是否通过(通过返回布尔值) ,并立即访问该错误。这与数字2大致相同,但如果需要,您现在可以拥有多个错误对象(而不仅仅是单个“getLastError”)。当可能存在多个连续调用的容易出错的方法时,这会在追踪特定错误时更清楚。