package main
import (
"fmt"
)
func main() {
f()
fmt.Println("Returned normally from f.")
}
func f() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
fmt.Println("Recovered in f", r)
}
}()
fmt.Println("Calling g.")
g()
fmt.Println("Returned normally from g.")
}
func g() {
panic("ERROR")
}panic 意思是抛出一个异常, 和python的raise用法类似
recover是捕获异常,和python的except用法类似
defer会延迟函数到其他函数之后完之后再执行,后面跟的是函数
golang 的错误处理流程:当一个函数在执行过程中出现了异常或遇到
panic(),正常语句就会立即终止,然后执行 defer 语句,再报告异
常信息,最后退出 goroutine。如果在 defer 中使用了 recover()
函数,则会捕获错误信息,使该错误信息终止报告。
本文详细解析了Go语言中用于处理错误的三大关键字:panic、recover与defer的作用与机制。通过实例演示,阐述了它们在错误处理流程中的角色与应用,帮助开发者更高效地进行错误管理。

771

被折叠的 条评论
为什么被折叠?



