merr
is a package that binds multiple errors.
merr
has pretty print, which outputs the bound errors in a well-formatted and easy-to-understand format.
It is also possible to change the output destination if necessary, which is very useful for debugging.
go get -u github.com/gemcook/merr
import "github.com/gemcook/merr"
multiError := merr.New()
// do something...
// error handling example
if multiError.ErrorOrNil() != nil {
return multiError
}
return nil
Appends error to list of errors. If there is no error list, it creates a new one.
multiError := merr.New()
for i := 0; i < 10; i++ {
if err := something(); err != nil {
multiError.Append(err)
}
}
Prints the object of the list of errors, separated by ,\n
.
multiError := merr.New()
for i := 0; i < 10; i++ {
// something() returns &errors.errorString{s: "something error"}
if err := something(); err != nil {
multiError.Append(err)
}
}
fmt.Println(multiError.Error())
"something error",
"something error",
.
.
.
"something error"
Prints a list of errors in a well-formatted, easy-to-understand format.
multiError := merr.New()
for i := 0; i < 10; i++ {
// something() returns &errors.errorString{s: "something error"}
if err := something(); err != nil {
multiError.Append(err)
}
}
multiError.PrettyPrint()
Errors[
&errors.errorString{
s: "something error",
},
&errors.errorString{
s: "something error",
},
&errors.errorString{
s: "something error",
},
.
.
.
&errors.errorString{
s: "something error",
},
]
The default output destination is the standard output. You can also change the output destination.
buf := bytes.NewBuffer(nil)
merr.SetOutput(buf)
MIT License