首页后端开发其他后端知识怎么能看懂的Golang异常处理recover panic?

怎么能看懂的Golang异常处理recover panic?

时间2024-03-26 09:56:03发布访客分类其他后端知识浏览1465
导读:这篇文章主要给大家介绍“怎么能看懂的Golang异常处理recover panic?”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“怎么能看懂的Golang异常处理reco...
这篇文章主要给大家介绍“怎么能看懂的Golang异常处理recover panic?”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“怎么能看懂的Golang异常处理recover panic?”文章能对大家有所帮助。

专注Golang,Python语言,云原生,人工智能领域得博主
过去经历的意义在于引导你,而非定义你,
只要我们足够努力,任何人都有无限潜力

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

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)

}
    

执行结果,成功捕获异常




以上就是关于“怎么能看懂的Golang异常处理recover panic?”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

异常处理

若转载请注明出处: 怎么能看懂的Golang异常处理recover panic?
本文地址: https://pptw.com/jishu/653423.html
PHP对数组访问都有哪些方法?你知道多少? Go结构体类型主要用做什么,如何进行声明和定义

游客 回复需填写必要信息