go - 如何使用 errorgroup 捕获错误?
问题描述
在这里,我希望 runner.go 包中的“运行”功能通过使用“错误组”连续运行。以后收到错误时如何捕获此错误?下面是我想做但失败的示例代码块。
谢谢你。
main.go
package main
import (
"context"
"fmt"
"awesomeProject/runner"
"golang.org/x/sync/errgroup"
"time"
)
func main() {
ctx := context.Background()
g, ctx := errgroup.WithContext(ctx)
g.Go(func() (err error) {
return runner.Start(ctx, 1 * time.Second)
})
if err := g.Wait(); err != nil {
fmt.Println(err)
fmt.Println("app terminated")
}
}
跑步者.go
package runner
import (
"context"
"errors"
"fmt"
"time"
)
func Start(ctx context.Context, dur time.Duration) error {
ticker := time.NewTicker(dur)
defer ticker.Stop()
for {
select {
case <-ctx.Done():
return nil
case <-ticker.C:
run(ctx)
}
}
}
func run(ctx context.Context) error {
fmt.Println(time.Now().String())
return errors.New("run:error")
}
解决方案
推荐阅读
- c++ - 在 C++ 中数值计算积分
- java - 一个类中的多个同步静态方法
- wordpress - 如何完全删除wordpress主题“二十九”的标题
- sql - SQL 获取数据 current_Datetime 减去 5 年?
- ios - Crashlytics 是否会在应用扩展上发生先前崩溃时调用 CrashlyticsDelegate?
- r - 如何在 CentOS 上安装最新版本的 R(目前为 4.0.0)?
- bash - 在写入时更改终端输出(日志)文件
- c - 双重递归中的 malloc 和 free
- bluetooth - 关于蓝牙服务发现协议的基本问题
- python - 如何在 Python 中将列名更改为工作日