GO语言之recover

本文介绍了Go语言中如何使用panic和recover进行异常处理。当运行时panic发生时,程序会崩溃,但通过在defer函数中使用recover,可以捕获panic并恢复程序执行。recover在panic发生时返回其值,否则返回nil。示例代码展示了在testb函数中如何使用defer和recover来避免程序崩溃。
摘要由CSDN通过智能技术生成

    运行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()
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值