Skip to content

wiggin77/merror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

merror

GoDoc Build Status

Multiple Error aggregator for Go.

Usage

func foo() error {
  merr := merror.New()

  if err := DoSomething(); err != nil {
    merr.Append(err)
  }

  return merr.ErrorOrNil()
}

A bounded merror can be used to guard against memory ballooning.

func bar() error {
  merr := merror.NewWithCap(10)

  for i := 0; i < 15; i++ {
    if err := DoSomething(); err != nil {
      merr.Append(err)
    }
  }

  fmt.Printf("Len: %d,  Overflow: %d", merr.Len(), merr.Overflow()) 
  // Len: 10,  Overflow: 5

  return merr.ErrorOrNil()
}

errors.Is

If any of the errors appended to a merror match the target error passed to errors.Is(err, target error) then true is returned.

errors.As

If any of the errors appended to a merror match the target type passed to errors.As(err error, target any) then true is returned and the target is set to the matching error.