Go 语言使用 error 类型来返回函数执行过程中遇到的错误,如果返回的 error 值为 nil,则表示没有错误,否则 error 会返回一个说明错误的字符串。
其实 error 只是一个接口,定义如下:
type error interface {
Error() string
}
你可以用任何类型去实现它(只要实现 Error() 方法即可)。
通过new 函数,生成简单的 error 对象
package main
import (
"fmt"
"iris/core/errors"
)
func run(code int) error {
if code > 0 {
return errors.New("这是一个错误")
}
return nil;
}
func main() {
// 有错误
err1 := run(601)
fmt.Println(err1)
// 无错误
err2 := run(0)
fmt.Println(err2)
}
通过实现Error()
方法自定义错误
package main
import (
"fmt"
"time"
)
// 自定义错误
type myError struct {
err string
time time.Time
appName string
}
func (myError *myError) Error() string {
return fmt.Sprintf("AppName:%s Error:%s RequestTime:%s", myError.appName, myError.err, myError.time)
}
func AppErr(err string, appName string) *myError {
return &myError{
err: err,
time: time.Now(),
appName: appName,
}
}
func run(code int) error {
if code > 0 {
return AppErr("这是一个自定义错误","UCenter");
}
return nil;
}
func main() {
// 有错误
err1 := run(601)
fmt.Println(err1)
// 无错误
err2 := run(0)
fmt.Println(err2)
}
网友评论