首頁 > 後端開發 > Golang > 主體

與 Java 的 GetMessage() 不同,我如何有效地比較和處理 Go 中的錯誤?

Mary-Kate Olsen
發布: 2024-11-25 21:09:11
原創
125 人瀏覽過

How Do I Effectively Compare and Handle Errors in Go, Unlike Java's GetMessage()?

比較 Go 中的錯誤訊息

在 Java 中,您可以使用 GetMessage() 從異常中擷取錯誤訊息。然而,在 Go 中,沒有為錯誤類型定義等效的方法。相反,必須採用自訂錯誤處理技術。

自訂錯誤處理

一種方法是定義一個包級變數來表示您想要的特定錯誤訊息檢查一下。例如:

var errExample = errors.New("this is an example")
登入後複製

傳回錯誤時,可以使用此變數取代通用錯誤字串:

if err := some_package.DoSomething(); err != nil {
    if err == errExample {
        // handle it however.
    }
}
登入後複製

匯出錯誤變數

如果套件外的程式碼需要存取錯誤,可以使用大寫匯出變數letter:

var ErrExample = errors.New("this is an example")
登入後複製

這允許您將錯誤與匯出的變數進行比較:

if err == somepackage.ErrExample {
    // handle it
}
登入後複製

範例

  • 絕對檔案路徑: os.ErrNotExist
  • HTTP 錯誤: net/http.ErrServerClosed
  • 資料庫錯誤: data/ ErrNoRows

陷阱:避免使用字串比較

抵制與錯誤的 Error() 方法傳回的字串進行比較的誘惑。這可能會導致程式碼變得脆弱。例如:

if err.Error() == "this is an example" {
    // this is not recommended
}
登入後複製
相反,請使用上面概述的自訂錯誤處理方法。

以上是與 Java 的 GetMessage() 不同,我如何有效地比較和處理 Go 中的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板