每种语言都有自己的一套错误定义方式,刚开始使用go的时候很不习惯,出现错误并不是返回错误码或者异常类,而是一个error的东东,如下:
type error interface {
Error() string
}
Error()是每一个订制的error对象需要填充的错误消息,用户可以这样定义一个error
第一种:通过errors包去订制error
err:=errors.New("返回一个错误")
fmt.Println(err.Error())
第二种:通过fmt.Errorf()去订制
err:=fmt.Errorf("返回错误信息")
fmt.Println(err.Error())
第三中,自己定义:
type Error int32
func (e Error) Error() string {
return errorMsg[int32(e)]
}
var (
errorMsg = map[int32]string{
//common
RetParamIncomplete: "param is incomplete",
RetCommunicationError: "communication error",
RetNotSupport: "no support",
RetParamError: "param is error",
RetSystemException: "system exception",
RetOperationError: "operation error",
RetRateLimit: "rate limit",
RetEngineIsNotReady: "engine is initializing...",
}
)
const(
RetParamIncomplete = 10001
)
var(
ErrorParamIncomplete = Error(RetParamIncomplete)
)