0%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| // goroutine异常处理
func test() {
// 建议在写每个goroutine的时候 首先写处理panic的方法 defer func() { if err := recover(); err != nil { fmt.Println("panic:", err) } }()
// 这里map没有初始化 会发生panic 如果不捕获会导致整个进程退出 var m map[string]string m["str"] = "s" }
func calc() { for { fmt.Println("calc.....") time.Sleep(time.Second) } }
func main() { go test() for i := 0; i < 2; i++ { go calc() } time.Sleep(time.Second * 10) }
|