Go自定义error

在 Go 语言中,可以通过实现 Error() 方法自定义错误类型。

在 Go 语言中,Error() 方法是一个内置方法,用于返回一个字符串,表示当前错误的描述信息。自定义错误类型只需要实现 Error() 方法即可,该方法返回一个字符串,表示错误的描述信息。

例如,我们可以定义一个自定义的错误类型 MyError,如下所示:

type MyError struct {
    Msg string // 错误信息
    Code int   // 错误代码
}

func (e *MyError) Error() string {
    return fmt.Sprintf("%d: %s", e.Code, e.Msg)
}

在上面的代码中,我们定义了一个 MyError 结构体类型,包含了 Msg 和 Code 两个字段,分别表示错误信息和错误代码。然后,我们实现了 Error() 方法,返回一个格式化后的字符串,其中包含了错误代码和错误信息。

使用自定义的错误类型也非常简单,只需要创建一个该类型的实例,然后将其返回即可。例如:

func foo() error {
    return &MyError{Msg: "something went wrong", Code: 500}
}

在上面的代码中,我们定义了一个名为 foo() 的函数,该函数返回一个 MyError 类型的实例。在该实例中,我们设置了错误信息为 "something went wrong",错误代码为 500。

这样,当 foo() 函数返回时,我们就可以通过类型断言来判断返回的错误类型是否为 MyError 类型,并获取其错误信息和错误代码,例如:

err := foo()
if e, ok := err.(*MyError); ok {
    fmt.Printf("Error code: %d, error message: %s\n", e.Code, e.Msg)
} else {
    fmt.Println("Unknown error")
}

在上面的代码中,我们首先调用 foo() 函数,获取其返回的错误实例。然后,我们使用类型断言判断该错误实例是否为 MyError 类型,如果是,则输出其错误信息和错误代码,否则输出 "Unknown error"。

最后修改:2023 年 08 月 27 日
如果觉得我的文章对你有用,请随意赞赏