2016-02-23 23 views
1

通常應該將函數和類方法中發生的錯誤傳回給調用者來處理?什麼時候你可能不會?我在問,因爲我正在創建一個模塊來執行oauth跳舞,並且如果您嘗試訪問的網站得到否定迴應,我不確定是否應該將其傳遞給調用者,或者在那裏處理它。有關將錯誤傳遞給調用者的最佳做法是什麼?

回答

3

這一般取決於回答兩個問題:

  1. 什麼層的信息,解釋錯誤,並提交給用戶或開發?

  2. 什麼圖層可以糾正錯誤,上層無法說出它曾經發生過的一種方式?

逐層檢查問題。找出錯誤可以被捕獲,糾正和透明處理的地方。如果做不到這一點,可以找出哪些錯誤可以用有用的術語解釋,並充實相關信息。

通常情況下,實際遇到錯誤的函數既不能充分解釋也不能糾正錯誤。 它應該引發異常,將決定委託給上層,可能會將附加數據附加到錯誤

當異常升高到足夠高時,您會發現自己處於上述兩種情況中的一種情況,您可以透明地更正錯誤或以清晰的語言報告錯誤,並提供所需信息追查原因。

在您的OAuth模塊的情況下,你應該:

  1. 決定行動是否重試是有道理的(如網絡錯誤)
  2. 確定問題的原因(如錯誤的憑據),並提高一個明顯表達的例外。
1

我們通常在raiseError,當我們期望某個值或來自用戶的輸入。例如:如果一個程序要求用戶輸入一個正整數並輸入一個負整數,那麼我們提出一個錯誤並要求他們輸入一個正整數。

我們處理不符合用戶的錯誤。例如:如果要訪問的網站需要電子郵件驗證,並且用戶輸入的電子郵件不被識別,那麼請raiseError並要求他們輸入一個有效的電子郵件地址,但是如果網站有搜索欄並且輸入的字符串是沒有正確地分割搜索,我們得到一個keyValueError,這取決於程序員來處理它。

相關問題