簡體   English   中英

在objective-c中返回錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM