defer 延迟
让程序其他逻辑先执行,defer定义的逻辑最后执行
recover 恢复
只在defer函数中有效
panic 恐慌
程序执行到panic的时候自动崩溃
示例:
defer func(){
if err := recover(); err !=nil{
fmt.Println("捕获异常:", err)
}
}()
defer fmt.Println(1)
defer fmt.Println(2)
panic("程序异常,这里主动崩溃中断")
package main
import (
"fmt"
)
func main() {
fmt.Println("程序开始")
safeFunction()
fmt.Println("程序继续运行...")
}
func safeFunction() {
defer func() {
if r := recover(); r != nil { // 捕获 panic
fmt.Println("捕获到异常:", r)
}
}()
fmt.Println("执行函数")
panic("触发异常") // 触发 panic,程序中断
fmt.Println("这行代码不会执行")
}
defer:延迟执行,先defer的后执行
panic 程序直接终止
recover在defer中执行,让程序恢复正常的状态去执行