Skip to content

gravitton/errors

Repository files navigation

Errors

Latest Stable Version Build Status Coverage Status Go Report Card Go Dev Reference Software License

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.

Installation

go get github.com/gravitton/errors

Usage

package 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()
}

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Concurrent safe representation of a list of errors as a single error.

Topics

Resources

License

Stars

Watchers

Forks

Languages