func main() { defer func() { fmt.Println("【主goroutine】执行延迟函数") r := recover() fmt.Printf("【主goroutine】捕获到异常了:%v\n",r) }() go func() { defer func() { fmt.Printf("【goroutine1】执行延迟函数\n") }() time.Sleep(2*time.Second) panic("【goroutine1】发生panic调用") fmt.Println("【goroutine1】发生奔溃后还能继续执行嘛") }() go func() { defer func() { fmt.Println("【goroutine2】执行延迟函数") r := recover() fmt.Printf("【goroutine2】捕获到异常了:%v\n",r) }() for i := 0; i< 100; i++{ fmt.Printf("【goroutine2】第%d次循环\n",i) time.Sleep(1*time.Second) } }() for i := 0; i< 100; i++{ fmt.Printf("【主goroutine】第%d次循环\n",i) time.Sleep(1*time.Second) } }
【主goroutine】第0次循环 【goroutine2】第0次循环 【goroutine2】第1次循环 【主goroutine】第1次循环 【主goroutine】第2次循环 【goroutine2】第2次循环 【goroutine1】执行延迟函数 panic: 【goroutine1】发生panic调用 goroutine 6 [running]: main.main.func2() C:/newuser/go/src/customServer/file.go:115 +0x6f created by main.main C:/newuser/go/src/customServer/file.go:110 +0x65结论: