Skip to content

错误处理

  • 错误表示程序中出现了异常情况。

定义错误

  • error的底层结构
go
// 是一个接口,定义了一个Error()方法,返回错误信息。
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)
}