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中执行,让程序恢复正常的状态去执行