2010-01-30 36 views
4

我在寫一個API,它包裝了一些可能返回一些可能的錯誤條件的核心基礎Web功能。我正在努力決定處理API消費者應該處理的錯誤條件的最佳方式(如網絡超時,接收到意外結果,格式錯誤的XML等)。我想出了3種不同的型號,但我不確定要使用哪種型號:我應該如何處理API中的錯誤?

考慮到與方法takeAction的對象不返回任何價值,我應該處理錯誤的方法是:

  1. 寫的方法是- (BOOL)takeAction:(NSError **)error讓消費者知道的方法是成功還是失敗,並且可以檢查錯誤對象來確定,

  2. 寫的方法是- (BOOL)takeAction,這樣,再次,消費者知道,如果該方法成功或失敗,然後可以調用- (NSError *)getLastError,以確定爲什麼方法失敗,或

  3. 它寫爲- (void)takeAction並張貼通知,以便消費者可以訂閱的通知並傳遞NSError對象通知的用戶信息字典?

哪個更好?

回答

6

我會使用第一種方法。這就是蘋果通常在其API中執行的操作,例如保存文件等。這種方法的好處是能夠快速查看它是否通過或失敗(通過返回布爾值),並立即有權訪問該錯誤。這與數字2基本相同,但是如果您需要它,現在可以擁有多個錯誤對象(而不僅僅是一個「getLastError」)。當可能存在多個連續調用的容易出錯的方法時,這將使得在追蹤特定錯誤時更清楚。

相關問題