golang中的recover

golang中的recover,第1张

recover

崩溃了恢复

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

func testb() {

   defer func() {
      //可以打印错误信息
      //recover()
      //fmt.Println(recover())

      //没有错就不要打印
      if err := recover(); err != nil {  //产生了panic异常
         fmt.Println(err)
      }
   }()
   //显示调用panic函数
   panic("this is a panic test")
   fmt.Println("bbbb")
}

func testc() {
   fmt.Println("cccc")
}

func main() {
   testa()
   //不会打印
   testb()
   testc()
}
控制链

 

func main() {
   fmt.Println("Enter function main.")
   panic(errors.New("something wrong"))
   p := recover()
   fmt.Printf("panic: %s\n", p)
   fmt.Println("Exit function main.")
}

这个不可以

需要defer结合使用
defer定义在恐慌前面是可以的

func main() {
   fmt.Println("Enter function main.")
   defer func() {
      //可以打印错误信息
      //recover()
      //fmt.Println(recover())

      //没有错就不要打印
      if err := recover(); err != nil {  //产生了panic异常
         fmt.Println(err)
      }
   }()
   panic(errors.New("something wrong"))
   fmt.Println("程序退出了")
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存