如何使用内建函数 recover() 终止 panic() 过程(参考章节 13.3):
recover()
panic()
func protect(g func()) { defer func() { log.Println("done") // Println executes normally even if there is a panic if x := recover(); x != nil { log.Printf("run time panic: %v", x) } }() log.Println("start") g() }