package main import ( "fmt" "os" "os/signal" "time" ) var err interface{} func main() { defer func() { if err=recover();err != nil { fmt.Println("main ==》 ",err) } }() interrupt := make(chan os.Signal) signal.Notify(interrupt, os.Interrupt) var i int = 0 for { i++ select { case <-time.After(time.Second): // 调用方法 go test(i) case <-interrupt: panic("终止") return } } } func test(i int) { defer func() { if err = recover(); err != nil { fmt.Println("test==>", err) } }() if i == 10 || i == 20 { panic("终止test") } fmt.Println("结果==》 ",i) }