首頁  >  文章  >  後端開發  >  如何捕捉 Go 中的特定錯誤?

如何捕捉 Go 中的特定錯誤?

DDD
DDD原創
2024-11-06 18:32:03926瀏覽

How do I Capture Specific Errors in Go?

捕獲Go 中的特定錯誤

與返回錯誤的標準Go 庫函數交互時,識別和處理特定類型非常有用錯誤,例如「連線遺失」或「連線被拒絕」。以下是如何實現這一點:

使用errors.Is和errors.As

對於現代Go版本,建議的方法是使用errors.Is和errors。作為標準庫中的函數。這些函數可讓您檢查錯誤是否與特定類型相符或提取錯誤訊息的子集。例如:

if errors.Is(err, syscall.ECONNREFUSED) {
    // err is a connection refused error
}

匹配錯誤字串

如果標準函式庫函數沒有提供特定錯誤的類型,您可以透過比較錯誤字串:

if err.Error() == "connection lost" {
    // err contains "connection lost" error
}

檢查特定錯誤類型

某些庫可能會匯出可以直接檢查的特定錯誤類型:

if _, ok := err.(net.Error); ok {
    // err is a net.Error instance
}

確定所有可能的錯誤

識別標準函式庫函數傳回的所有可能的錯誤需要閱讀原始碼。或者,您可以檢查文檔,例如 net 套件的 godoc,其中經常描述錯誤。

以上是如何捕捉 Go 中的特定錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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