Appearance
错误处理
错误表示程序中出现了异常情况。比如当我们试图打开一个文件时,文件系统里却并没有这个文件。这就是异常情况,它用一个错误来表示。
定义错误
go错误的底层结构
go
type error interface {
Error() string
}
- 自定义一个错误
go
//1.先顶一个自定义错误结构
type CodeError struct {
Code int
Message string
Data interface{}
}
//2.实现error接口的方法Error
func (c *CodeError) Error() string {
return c.Message
}
func main() {
//3.可以使用定义错误了
var err1 error = &CodeError{Code: 0, Message: "test", Data: nil}
fmt.Println(err1)
}
错误接收
go
//方式1 变量接收
file, err := os.Open("a.txt")
fmt.Println(file, err)
//方式2 忽略错误
file, _ := os.Open("a.txt")
fmt.Println(file)
收集错误
- 有些错误程序可能看不出,超过临界值才会出现。
- 所以需要recover()来捕获错误。
go
func devide() {
//defer 等函数执行完毕再执行
defer func() {
//recover() //捕获异常错误
err := recover()
if err != nil {
fmt.Println("devide()错误", err)
}
}()
num1 := 10
num2 := 0
result := num1 / num2
fmt.Println(result)
}