panic和recover实现无renturn返回

2021-08-04  本文已影响0人  atdoking

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型返回了

上一篇 下一篇

猜你喜欢

热点阅读