如何在Go语言中实现自定义错误信息?

16 min read

在Go语言中,可以通过实现error接口来自定义错误信息。error接口只有一个方法Error(),需要返回一个string类型的错误信息。

示例代码:

type MyError struct {
    code int
    message string
}

func (e MyError) Error() string {
    return fmt.Sprintf("%d: %s", e.code, e.message)
}

func doSomething() error {
    return MyError{code: 500, message: "Internal server error"}
}

func main() {
    err := doSomething()
    fmt.Println(err.Error())    // 输出 "500: Internal server error"
}

在上面的代码中,我们定义了一个结构体MyError,它有两个属性codemessage,同时实现了error接口的Error()方法,将codemessage格式化并返回给调用方。在doSomething()方法中,我们可以将自定义的MyError结构体作为返回值,当发生错误时就可以返回一个可读性更强的错误信息。