go语言panic异常及recover拦截恢复初级

Go语言为我们提供了专用于“拦截”运行时panic的内建函数——recover。它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。下面我们来看一下具体该怎么用

package main import "fmt"func main()  {    var a int =10    //故意让10除以0    var b int    //recover应当放在可能出现的错误之前    //通俗理解为宜未雨绸缪,不可亡羊补牢    defer func() {    //放在匿名函数里,err捕获到错误信息,并且输出        err:=recover()        if err!=nil {            fmt.Println(err)        }    }()    c:=a/b    fmt.Println(c)}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

以上可能大家还不能完全理解,下面再来一个稍微复杂一点点的例子

package mainimport "fmt"func test(i int)  {    var arr [10]int    //defer会延迟函数的执行,虽然立即调用了匿名函数,但是该匿名函数    //不会执行,等整个main函数结束之前在去调用执行匿名函数    defer func(){        err:=recover()        //nil为空的意思,如果不为空,贼表明捕获到了错误信息        if err!=nil {            fmt.Println(err)        }    }()    arr[i]=123    fmt.Println(arr)}//主函数开始调用,故意越界,但是程序并没报错,而是打印出了错误信息func main() {    test(10)}****以上则为recover最基础的用法****原文地址https://blog.csdn.net/weixin_42940826/article/details/81587867
收藏 打印