13.3 从 panic 中恢复(recover)

Kesa...小于 1 分钟

13.3 从 panic 中恢复(recover)

recover() 用于从错误场景中恢复,让程序从 Panicking 中获得控制权,停止终止过程恢复正常执行。

recover()只能在defer修饰的函数中使用,用于取得panic()调用中传递的错误值;若正常执行,recover()返回nil

panic() 会导致栈被展开知道defer 修饰的recover()被调用或者程序终止

panic_recover.go

package chapter_13

import "fmt"

func panicRecover() {
	fmt.Println("Calling test")
	test()
	fmt.Println("Test completed")
}

func badCall() {
	panic("bad end")
}

func test() {
	defer func() {
		if err := recover(); err != nil {
			fmt.Printf("Panicing %s \n", err)
		}
	}()
	badCall()
	fmt.Printf("After bad call \n")
}

Calling test
Panicing bad end 
Test completed
上次编辑于:
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.2