当程序出现错误时(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
}
}