Go语言异常处理,拦截

异常处理

error接口:

error是一个接口,该接口只声明了一个方法Error(),返回值是string类型,用以描述错误信息。

func main() {
	err := errors.New("这是一个错误")
	fmt.Printf("%T,%v\n", err, err) //	*errors.errorString,这是一个错误

	err2 := err.Error()
	fmt.Printf("%T,%v\n", err2, err2) //	string,这是一个错误
}

panic错误:

panic返回一个让程序崩溃的错误(数组访问越界、空指针引用等)

发生panic异常,已注册的defer会继续正常执行

recover:

recover可以用来拦截panic,只能在defer中的匿名函数中使用。recover拦截后panic异常不影响,其他函数。

recover的返回值是panic错误信息

func main() {
	fmt.Println(1)
	demo14()
	fmt.Println(2)
}

func demo14() {
	defer fmt.Println(3)
	defer func() {
		a:=recover()
		fmt.Println(a)
	}()
	defer fmt.Println(4)
	fmt.Println(5)
	panic("panic")
	fmt.Println(6)
}
// 1 5 4 panic 3 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值