当程序出现错误时(panic),我们希望程序能继续执行,并且我们能补货这个错误并进行处理,进行错误处理后能让我们的代码更加健壮,实现思路如下
deferpanicrecover
  • 捕获并处理异常
package main

import "fmt"

func main() {
	errFun()
	fmt.Println("后续代码")
}

func errFun() {
	//异常处理
	defer func() {
		//捕获异常
		err := recover()
		if err != nil {//条件判断,是否存在异常
			//存在异常,抛出异常
			fmt.Println(err)
		}
	}()

	a := 1
	b := 0

	//此处会抛出异常panic: runtime error: integer divide by zero
	c := a / b
	fmt.Println(c)
}

如果不对异常进行捕获处理,程序出现异常是直接终止,进行异常处理时,不影响后续代码执行
当程序在一些关键地方出错时,我们希望程序立即终止执行并抛出错误
package main

import (
	"errors"
	"fmt"
)

func main() {
	//调用读取配置文件方法,并接受返回值
	err := config("conf.txt")
	//判断错误不为空,抛出异常,终止程序执行
	if err != nil{
		panic(err)
	}

	fmt.Println("后续代码")
}

func config(conf string) error {
	//模拟读取配置文件,当传入的配置文件名不等于conf.ini时输出错误
	if conf != "conf.ini"{
		//自定义错误
		return errors.New("读取配置文件失败")
	}else {
		//没有错误,返回空
		return  nil
	}
}