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() }