美文网首页
panic和recover实现无renturn返回

panic和recover实现无renturn返回

作者: atdoking | 来源:发表于2021-08-04 23:23 被阅读0次

    Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic 的输入值,并且恢复正常的执行。

    package main
    
    import (
        "fmt"
    )
    
    func main()  {
        a := returnN()
        fmt.Println(a)
    }
    func returnN() (result int) {
        defer func() {
            if p:=recover();p!=nil{
                result = p.(int)
            }
        }()
        panic(3)
    }
    
    image.png

    执行结果如上图,panic宕机,recover捕捉到了panic输入的3,所以p就是返回异常“3”
    p.(int)就将异常转换为int型返回了

    相关文章

      网友评论

          本文标题:panic和recover实现无renturn返回

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