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"。
此处评论已关闭