首頁 >後端開發 >Golang >golang錯誤拋出的方法

golang錯誤拋出的方法

尚
原創
2020-01-14 16:13:534023瀏覽

golang錯誤拋出的方法Go語言沒有提供像Java、C#語言中的try...catch異常處理方式,而是透過函數傳回值逐層往上拋。

Go標準套件提供的錯誤處理功能:

error是個interface:

type error interface {
    Error() string
}

如何建立error:

// example 1
func Sqrt(f float64) (float64, error) {
    if f < 0 {
        return 0, errors.New("math: square root of negative number")
    }
    // implementation
}

// example 2
if f < 0 {
    return 0, fmt.Errorf("math: square root of negative number %g", f)
}

如何自訂error:

// errorString is a trivial implementation of error.
type errorString struct {
    s string
}

func (e *errorString) Error() string {
    return e.s
}

go語言中一般有三種錯誤處理策略:

#1、回傳和檢查錯誤值:透過特定值表示成功和不同的錯誤,上層程式碼檢查錯誤的值,來判斷被調用func的執行狀態

2、自訂錯誤類型:透過自訂的錯誤類型來表示特定的錯誤,上層程式碼透過型別斷言判斷錯誤的型別

3、隱藏內部細節的錯誤處理:假設上層程式碼不知道被呼叫函數回傳的錯誤任何細節,直接再向上回傳錯誤

error interface 的 Error 方法的輸出,是給人看的,不是給機器看的。我們通常會把Error方法傳回的字串印到日誌中,或是顯示在控制台上。永遠不要透過判斷Error方法傳回的字串是否包含特定字串,來決定錯誤處理的方式。

更多golang知識請關注golang教程欄位。

以上是golang錯誤拋出的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn