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

如何處理 Golang 中自訂類型的錯誤?

WBOY
發布: 2024-06-05 12:47:56
原創
1008 人瀏覽過

建立自訂錯誤類型可讓您在 Golang 中處理特定網域錯誤。建立錯誤類型後,可以使用錯誤斷言來檢查錯誤:檢查該錯誤類型是否與自訂錯誤類型相符。如果匹配,則可以存取自訂錯誤的訊息。否則,處理其他類型的錯誤。

如何处理 Golang 中自定义类型的错误?

如何處理Golang 中自訂類型的錯誤

在Golang 中建立自訂錯誤類型是定義特定領域錯誤的好方法。這允許您建立包含有關錯誤的附加資訊的錯誤。

建立自訂錯誤類型

要建立自訂錯誤類型,可以使用內建的errors.New() 函數:

package errors

import "fmt"

type MyError struct {
    msg string
}

func New(msg string) *MyError {
    return &MyError{msg: msg}
}

func (m *MyError) Error() string {
    return fmt.Sprintf("自定义错误:%s", m.msg)
}
登入後複製

Error() 方法傳回錯誤訊息。它應該是實作了 error 介面的唯一方法,即它應該傳回字串類型的訊息。

處理自訂錯誤

一旦建立了自訂錯誤類型,就可以使用errortype assersions 檢查錯誤:

func process() error {
    // 调用可能有错误的方法
    if err := doSomething(); err != nil {
        if me, ok := err.(*MyError); ok {
            // 处理自定义错误
            fmt.Println(me.msg)
        } else {
            // 处理其他类型的错误
            return err
        }
    }
    return nil
}
登入後複製

實戰案例

以下是一個將數字轉換為字串時可能拋出自定義錯誤的函數的範例:

func convertToString(num int) (string, error) {
    if num < 0 {
        return "", errors.New("数字必须为非负数")
    }
    return strconv.Itoa(num), nil
}
登入後複製

在呼叫此函數時,您可以使用錯誤斷言來處理自訂錯誤:

result, err := convertToString(-1)
if err != nil {
    if me, ok := err.(*errors.MyError); ok {
        fmt.Println(me.msg)  // 输出:数字必须为非负数
    }
}
登入後複製

以上是如何處理 Golang 中自訂類型的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!