【golang笔记】go_协程的panic处理(28)
Page content
这一篇简单的整理了golang 协程的panic处理
相关的内容。
recover
有多个协程同时运行时,其中的一个协程出panic有可能整个程序会崩溃。
为了防止这种现象,我们可以defer + recover 的方式处理异常。
package main
import (
"fmt"
"time"
)
//函数
func sayHello() {
for i := 0; i < 10; i++ {
time.Sleep(time.Second)
fmt.Println("hello,world")
}
}
//函数
func test() {
//这里我们可以使用defer + recover
defer func() {
//捕获test抛出的panic
if err := recover(); err != nil {
fmt.Println("test() 发生错误", err)
}
}()
//定义了一个map
var myMap map[int]string
myMap[0] = "golang" //error
}
func main() {
go sayHello()
go test()
for i := 0; i < 10; i++ {
fmt.Println("main() ok=", i)
time.Sleep(time.Second)
}
}
欢迎大家的意见和交流
email: li_mingxie@163.com