package main import ( "fmt" "time" ) // GoroutineRecover 协程独立恢复,不影响主程序 func GoroutineRecover() { // 协程 1:带恢复 go func() { defer func() { if err := recover(); err != nil { fmt.Printf("[协程1] 捕获异常: %v\n", err) } }() panic("异步任务执行失败") }() // 协程 2:正常执行 go func() { fmt.Println("[协程2] 异步任务执行成功") }() time.Sleep(200 * time.Millisecond) } func main() { // 协程安全恢复演示 GoroutineRecover() println("----------------------------------------") fmt.Println("主程序执行完成,无崩溃退出") }