@@ -1,58 +0,0 @@ 19.recover | 凤凰涅槃进阶之路

19.recover

Abel sun2023年1月6日约 282 字小于 1 分钟

19.recover

运行时panic异常一旦被引发就会导致程序崩溃。这当然不是我们愿意看到的,因为谁也不能保证程序不会发生任何运行时错误。

不过,Go语言为我们提供了专用于“拦截”运行时panic的内建函数--recover。他可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。

注意:recover只有在defer调用的函数中有效。

如果调用了内置函数recover,并且定义该defer语句的函数发生了panic异常,recover会使程序从panic中恢复,并返回panic value。导致panic异常的函数不会继续运行,但能正常返回。在未发生panic时调用recover,recover会返回nic。

1,recover的使用

package main

import "fmt"

func testa() {
 fmt.Println("aaaaaa")
}

func testb(x int) {
 //设置recover
 defer func() {
  //recover()  //可以打印panic的错误信息
  //fmt.Println(recover())
  if err := recover(); err != nil { //产生panic异常
   fmt.Println(err)
  }
 }() //别忘了这个圆括号,表示调用此匿名函数
 var a [10]int
 a[x] = 111
}
func testc() {
 fmt.Println("ccccc")
}
func main() {
 testa()
 testb(20)
 testc()
}

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.9.1