[英]Returning errors in objective-c
我對objective-c很新,我開始想知道處理和捕獲錯誤的常用/標准/正確方法是什么?
似乎有可能使用NSError來做到這一點,這是一個好主意還是劫持可可?
我很確定NSError類是做什么的 - 提供有關錯誤的詳細信息。 您將看到的最常見的模式是一個采用指向NSError對象的指針的方法,如:
- (id)doSomethingWithArgument:(id)arg error:(NSError **)error
該方法為執行某些操作的結果返回一些值(或可能為nil
),但如果調用失敗,則會在傳遞的指針上放置一個NSError對象,其中包含有關失敗的詳細信息。 如果方法遇到錯誤,您的文檔負責指定返回的內容。
想到的另一種方法是@throw
- @catch
塊; 然而,在Objective-C @throw
,異常可能在計算上相當昂貴,而且通常只建議在真正特殊情況下這樣做。
編輯:哇,事實證明很多人對@throw
異常有很強烈的意見。 總結一下(非常有幫助的)關於這個問題的評論:
error
方法或發布NSNotification的實例。 @throw
/ @catch
塊,請非常小心它們周圍的邏輯。 Objective-C提供了許多方法來分離在其他線程中運行的方法,或延遲執行等。在編寫代碼時要非常小心地考慮所有這些可能性。 最后,另一個非常有效的觀點:
error
對象,則返回值應指示它。 不要嘗試兩者都做(返回部分有效的對象並設置error
對象)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.