Go 中的錯誤處理:標準和慣用方法
Golang 鼓勵使用錯誤變數來指示錯誤的發生。但是,沒有預先定義的標準錯誤變數集。相反,建議開發人員採用慣用的做法來定義和處理錯誤。
固定錯誤變數
套件定義名稱以以下開頭的固定錯誤變數是常見的前綴「錯誤」。這些變數通常用於表示特定的錯誤條件,以便輕鬆檢查錯誤。例如:
var ( ErrSomethingBad = errors.New("some string") ErrKindFoo = errors.New("foo happened") )
錯誤類型
另一種慣用方法是透過建立實作錯誤介面的結構來定義自訂錯誤類型。這些錯誤類型可以包含與錯誤相關的附加訊息,以便於檢查特定類型的錯誤。
type SomeError struct { ExtraInfo int } type OtherError string func (e SomeError) Error() string { /* … */ } func (e OtherError) Error() string { return fmt.Sprintf("failure doing something with %q", string(e)) }
臨時錯誤值
在某些情況下如果沒有預料到特定的錯誤情況,可以使用Errors.New()函數動態建立新的錯誤值。此方法傳回帶有自訂錯誤訊息的錯誤值。
func SomepackageFunction() error { return errors.New("not implemented") }
使用標準錯誤
Go 提供了在其包中定義的一組有限的標準誤差。在實現介面或遵守特定標準時經常會出現這些錯誤。但是,通常建議為包內更具體的錯誤條件定義自訂錯誤。
func SomeFunc() error { return io.EOF }
錯誤介面
Go 也允許建立錯誤介面定義常見錯誤行為。這些介面可以檢查特定屬性的錯誤。
type Error interface { error Timeout() bool // Is the error a timeout? Temporary() bool // Is the error temporary? }
Go 1.13 中的錯誤包裝
從 Go 1.13 開始,可以使用上下文包裝現有錯誤或附加資訊。這透過向用戶提供更多上下文來簡化錯誤處理,而無需大量自訂錯誤類型。
func SomepackageFunction() error { err := somethingThatCanFail() if err != nil { return fmt.Errorf("some context: %w", err) } }
透過遵循這些慣用實踐,開發人員可以有效地處理 Go 程式碼中的錯誤,確保清晰且可管理的錯誤處理機制。
以上是慣用的 Go 實作如何解決錯誤處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!