panic
记录
预计阅读时间 1分钟
package main
import "fmt"
func main() {
defer func() {
fmt.Println(recover()) // 3
}()
defer panic(3) // 将替换恐慌2
defer panic(2) // 将替换恐慌1
defer panic(1) // 将替换恐慌0
panic(0)
}
type _panic struct {
argp unsafe.Pointer // 指向 defer 调用时参数的指针
arg interface{} // 调用 panic 时传入的参数
link *_panic // 指向了更早调用的 runtime._panic 结构
recovered bool // 表示当前 runtime._panic 是否被 recover 恢复
aborted bool // 表示当前的 panic 是否被强行终止
pc uintptr
sp unsafe.Pointer
goexit bool
}