小学生也能看懂的Golang异常处理recover panic
更新时间:2021年09月27日 15:32:29 作者:毛毛是一只狗
在其他语言里,宕机往往以异常的形式存在,底层抛出异常,上层逻辑通过 try/catch 机制捕获异常,没有被捕获的严重异常会导致宕机,go语言追求简洁,优雅,Go语言不支持传统的 try…catch…finally 这种异常
🌌 专注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的文章就介绍到这了,更多相关Golang 异常处理 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
go tool pprof 参数 '-base' 和 '-diff_base&
这篇文章主要介绍了go tool pprof 参数 '-base' 和 '-diff_base'之间的区别,两个参数都是用于计算当前 profile文件减去基准profile文件所获得的差值,用这个差值生成一个新的profile文件,本文给大家介绍的非常详细,需要的朋友可以参考下2023-05-05
最新评论