# 5.8、Golang 标准库-errors errors包实现了操作错误的函数 error结构 ```go type error interface { Error() string } ``` 使用示例 ```go package main import ( "errors" "fmt" ) func check(str string) (string, error) { if str == "" { err := errors.New("字符串不能为空") return "", err } else { return str, nil } } func main() { s, err := check("") if err != nil { fmt.Printf("err: %v\n", err.Error()) } else { fmt.Printf("s: %v\n", s) } // err: 字符串不能为空 } ``` 自定义异常 ```go package main import ( "fmt" "time" ) type MyError struct { When time.Time What string } func (err MyError) Error() string { return fmt.Sprintf("%v: %v", err.When, err.What) } func oops() error { return MyError{ time.Date(2000, 01, 02, 03, 04, 05, 0, time.UTC), "my error", } } func main() { err := oops() if err != nil { fmt.Printf("err: %v\n", err.Error()) } // err: 2000-01-02 03:04:05 +0000 UTC: my error } ```