栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

一看就会☀️Go异常处理recover,panic

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一看就会☀️Go异常处理recover,panic

 专注Golang,Python语言,云原生,人工智能领域得博主
 过去经历的意义在于引导你,而非定义你,
 只要我们足够努力,任何人都有无限潜力
 欢迎点赞  收藏 ⭐留言!

  • panic 抛出异常函数
  • recover 捕获异常函数

实践
  • 1:在一个主协成内捕获异常
  • 2:假设子协成内部错误,看看主协成能不能捕获到
  • 3:假设子协成错误需要自己捕获

1:在一个主协成内捕获异常
package main

import (
	"fmt"
)

func main(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.Println("捕获到异常")
		}
	}()

	panic("异常出现") //抛出异常,代表错误代码

}

运行结果

2:假设子协成内部错误,看看主协成能不能捕获到
package main

import (
	"fmt"
)

func Calculate(){
    
	panic("异常出现")  // 同样代表错误代码
}



func main(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.Println("捕获到异常")
		}
	}()

	go Calculate()
	
	time.Sleep(time.Second*3)  //防止主协成过早退出,导致子协成没执行

}

 执行结果,主协成不能捕获到子协成的错误

3:假设子协成错误需要自己捕获
package main

import (
	"fmt"
	"time"
)

func Calculate(){

	defer func(){
		err := recover()
		if err != nil{
			fmt.Println("协成内部捕获异常")
		}
	}()

	panic("异常出现")
}



func main(){

	go Calculate()

	time.Sleep(time.Second*3)

}

执行结果,成功捕获异常

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号