建立自訂錯誤類型可讓您在 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中文網其他相關文章!