multierr

package
v1.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2022 License: GPL-3.0 Imports: 1 Imported by: 3

Documentation

Overview

Package multierr provides a simple way of handling multiple errors and consolidating them into a single error.

Example:

package main

import (
	`r00t2.io/goutils/multierr`
)

func main() {

	var err error
	var errs []error

	errs = make([]error, 0)

	for _, i := range someSlice {
		go func() {
			if err = i.DoSomething(); err != nil {
				errs = append(errs, err)
			}
		}()
	}

	if errs != nil && len(errs) != 0 {
		// err now contains multiple errors presented as a single error interface.
		err = multierr.NewErrors(errs...)
	}
}

MultiError also has a shorthand, making the above much less verbose:

package main

import (
	`r00t2.io/goutils/multierr`
)

func main() {

	var err error
	var multierror *multierr.MultiError = multierr.NewMultiError(nil)

	for _, i := range someSlice {
		go func() {
			if err = i.DoSomething(); err != nil {
				multierror.AddError(err)
			}
		}()
	}

	// multierror now contains any/all errors above. If calling in a function, you'll probably want to do:
	// if !multierror.IsEmpty() {
	//		err = multierror
	// }

}

In the above, the multierror assignment can still be used as an error.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewErrors

func NewErrors(errs ...error) (err error)

NewErrors returns a new MultiError (as an error) based on/initialized with a slice of error.Error (errs). Any nil errors are trimmed. If there are no actual errors after trimming, err will be nil.

Types

type MultiError

type MultiError struct {
	// Errors is a slice of errors to combine/concatenate when .Error() is called.
	Errors []error `json:"errors"`
	// ErrorSep is a string to use to separate errors for .Error(). The default is "\n".
	ErrorSep string `json:"separator"`
}

MultiError is a type of error.Error that can contain multiple errors.

func NewMultiError

func NewMultiError(errs ...error) (m *MultiError)

NewMultiError will provide a MultiError (true type), optionally initialized with errors.

func (*MultiError) AddError

func (e *MultiError) AddError(err error)

AddError is a shorthand way of adding an error to a MultiError.

func (*MultiError) Count

func (e *MultiError) Count() (n int)

Count returns the number of errors in a MultiError.

func (*MultiError) Error

func (e *MultiError) Error() (errStr string)

Error returns a string representation of a MultiError (to conform with the error interface).

func (*MultiError) IsEmpty

func (e *MultiError) IsEmpty() (empty bool)

IsEmpty is a shorthand for testing if e.Errors is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL