您的位置 首页 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

关于作者: 智云科技

热门文章

网站地图