8.4 panic和recover
一、panic
panic程序不知道如何处理的感觉
停止当前函数执行
一直向上返回,执行每一层的
defer如果没有遇见
recover,程序退出
二、recover
recover仅在
defer调用中使用获取
panic的值如果无法处理,可重新
panic
package main
import "fmt"
func tryRecover() {
defer func() {
err := recover()
if err, ok := err.(error); ok {
fmt.Println("error:", err)
} else {
panic(fmt.Sprintf("不知道的错误", err))
}
}() // 需要加()
panic("错误")
//
// b := 0
// a := 5 / b
// fmt.Println(a)
}
func main() {
tryRecover()
}Last updated
Was this helpful?