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