初面网初面网

defer、panic、recover

defer

延迟执行代码。先defer后执行,后defer先执行

defer注册要延迟执行的函数时,该函数所有的参数都需要其值为确定值

func main() {
	defer fmt.Println("1")
	defer fmt.Println("2")
	defer fmt.Println("3")
}
// 3 2 1

panic、recover

panic抛出异常, recover接收异常。但是,recover只能写在defer注册的函数内

func main() {
	func() {
		defer func() {
			err := recover()
			if err != nil {
				fmt.Println(err)
			}
		}()
		panic("有异常")
	}()
}

更新于 2026/8/13