Multi error: Concurrent safe representation of a list of errors as a single error.
Data error: Additional context for error using data fields and cause (previous) error.
go get github.com/gravitton/errorspackage main
import (
"github.com/gravitton/errors"
)
func Process() error {
if err := subProcess(); err != nil {
return errors.Wrap(err).WithField("process", "abc").WithCause(err)
}
return errors.Newf("this should not happen %s", "again")
}package main
import (
"github.com/gravitton/errors"
"sync"
)
func Process() error {
errs := errors.NewMulti()
errs.Append(process(1))
errs.Append(process(2))
return errs.ErrorOrNil()
}
func ProcessConcurrent() error {
errs := errors.NewMulti()
wg := sync.WaitGroup{}
for i := 0; i < 10; i++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
if err := process(i); err != nil {
errs.Append(errors.Wrap(err).WithField("process", i))
}
}(i)
}
wg.Wait()
return errs.ErrorOrNil()
}The MIT License (MIT). Please see License File for more information.