- 宕机后的所有语句不会执行,但是会执行宕机前的defer语句,recover 捕获宕机错误
package main
import "fmt"
func main() {
defer fmt.Println("1111")
defer func() {
err := recover()
fmt.Println("err is ", err)
}()
panic("panic")
}
- 发生异常时函数获取返回值,主函数callFunc没有指定返回值的变量时无法获取返回值内容
package main
import "fmt"
func callPanic() (a int) {
defer fmt.Println("1111")
defer func() {
if info := recover(); info != nil {
a = 1
} else {
a = 2
}
}()
panic("panic")
}
func main() {
fmt.Println(callPanic())
}
Go语言panic与recover机制
本文探讨了Go语言中panic和recover的使用场景,通过代码示例解释了当函数发生panic时,如何通过defer语句捕获错误并利用recover进行错误处理。同时,文章展示了在异常情况下函数返回值的获取问题。
729

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



