Go指南学习笔记十一

错误

Go使用error来标识错误状态。
fmt.Stringer一样,error类型也是个内建接口。

1
2
3
type error interface {
Error() string
}

通常函数会返回一个error值,调用它的代码应判断这个错误是否等于nil来进行错误处理。

1
2
3
4
5
6
7
i, err := strconv.Atoi("42")
if err != nil {
fmt.Printf("conldn't convert number: %v\n", err)
return
}
fmt.Printfln("Converted integer:", i)

error为nil时表示成功;非nil的error表示错误

如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main
import (
"fmt"
"time"
)
type MyError struct {
When time.Time
What string
}
func (e *MyError) Error() string {
return fmt.Sprintf("at %v, %s", e.When, e.What)
}
func run() error {
return &MyError{time.Now(), "it didn't work",}
}
func main() {
if err := run(); err != nil {
fmt.Println(err) //
}
}

运行输出结果:

1
at 2017-10-25 09:31:30.9208855 +0800 CST, it didn't work

如果您觉得对您有帮助,谢谢您的赞赏!