Skip to content

1. error

1.1 简述

Go 语言引入了一个关于错误处理的标准模式,即 error 接口,它是 Go 语言内建的接口类型,该接口的定义如下:

go
type error interface {
    Error() string
}
type error interface {
    Error() string
}

案例

go
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	f, err := ioutil.ReadFile("./text.txt")
	if err != nil {
        fmt.Println("文件读取失败", err.Error()) //Error()  抛出到终端
	} else {
		fmt.Println("文件读取成功", string(f))
	}
}
package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	f, err := ioutil.ReadFile("./text.txt")
	if err != nil {
        fmt.Println("文件读取失败", err.Error()) //Error()  抛出到终端
	} else {
		fmt.Println("文件读取成功", string(f))
	}
}

2. errros自定义错误

go
package main

import (
	"errors"
	"fmt"
)

func divide(a, b int) (res int, err error) {
	if b == 0 {
		return 0, errors.New("除数不能为0")
	}
	res = a / b
	return res, nil
}

func main() {
	// 自定义error
	error := errors.New("这是一个新的错误")
	fmt.Println(error)
	fmt.Println("================")
	res, err := divide(1, 1)
	if err != nil {
		fmt.Println("计算出错", err.Error())
	} else {
		fmt.Println("计算结果为:", res)
	}
}
package main

import (
	"errors"
	"fmt"
)

func divide(a, b int) (res int, err error) {
	if b == 0 {
		return 0, errors.New("除数不能为0")
	}
	res = a / b
	return res, nil
}

func main() {
	// 自定义error
	error := errors.New("这是一个新的错误")
	fmt.Println(error)
	fmt.Println("================")
	res, err := divide(1, 1)
	if err != nil {
		fmt.Println("计算出错", err.Error())
	} else {
		fmt.Println("计算结果为:", res)
	}
}

3. panic

panic:可以在异常的时候让程序终止执行,退出程序。或者是程序所强依赖的基础组件不可用

此时程序已经无法继续正常工作,这时候可以使用panic抛出异常,并且把程序退出