美文网首页
GO语言之recover

GO语言之recover

作者: 测试探索 | 来源:发表于2020-07-21 06:00 被阅读0次

    运行panic异常一旦被引发就会导致程序崩溃,这当然不是我们愿意看到的,go语言提供乐专用于“拦截”运行时panic的内建函数-recover,它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。
    注意:recover只有在defer调用的函数中有效
    如果调用了内置函数recover,并且定义该defer语句的函数发生了panic异常,recover会使用程序从panic中恢复,并且返回panic value,导致panic异常的函数不会继续执行,但能正常返回。在未发生panic时调用recover,recover会返回nil。

package main

import "fmt"

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

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("ccccccc")
}
func main(){
    testa()
    testb(20)
    testc()
}

相关文章

网友评论

      本文标题:GO语言之recover

      本文链接:https://www.haomeiwen.com/subject/qcbmtktx.html