golang-study/base/panic/main.go

39 lines
515 B
Go

package main
import (
"fmt"
)
func f1() {
fmt.Println("A")
}
func f2() {
// defer 在 panic 抛出之前执行
// defer 必须 在 可能引发 panic 的语句之前定义
defer func() {
fmt.Println("defer: 执行")
// 使用 recover 恢复执行
// 返回值为 nil 则无异常
err := recover()
if err != nil {
fmt.Println("recover:", err)
}
}()
// 抛出异常 程序退出
panic("抛出异常")
fmt.Println("B")
}
func f3() {
fmt.Println("C")
}
func main() {
f1()
f2()
f3()
}