您的位置 首页 golang

Go协程错误处理

我们经常会启动多个协程处理问题,在错误处理的时候,我们通常的做法就是定义一个chann,如果发生了错误,就发生到chann里面。然后再启动一个协程去读这个chann,从而判断是否有协程运行报错。

但这种方式写法上比较麻烦,其实在Go里面有一种更加优雅的方式处理错误,errgroup。代码如下:

 func main() {
var g errgroup.Group
var urls = []string{
"#34;,
"#34;,
"#34;,
}
for _, url := range urls {
url := url // 闭包处理
g.Go(func() error {
// 请求URL
resp, err := http.Get(url)
if err == nil {
resp.Body.Close()
}
return err
})
}
// 等待所有协程执行完毕
if err := g.Wait(); err == nil {
fmt.Println("Successfully fetched all URLs.")
}
}  

上面通过errgroup简化了代码,如果有一个协程返回报错,wait 方法就可以获取返回的err。非常方便。

文章来源:智云一二三科技

文章标题:Go协程错误处理

文章地址:https://www.zhihuclub.com/101245.shtml

关于作者: 智云科技

热门文章

网站地图