在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
,它有两个属性code
和message
,同时实现了error
接口的Error()
方法,将code
和message
格式化并返回给调用方。在doSomething()
方法中,我们可以将自定义的MyError
结构体作为返回值,当发生错误时就可以返回一个可读性更强的错误信息。