https://github.com/gemcook/merr
merr is a package that binds multiple errors.
https://github.com/gemcook/merr
error go golang
Last synced: 9 months ago
JSON representation
merr is a package that binds multiple errors.
- Host: GitHub
- URL: https://github.com/gemcook/merr
- Owner: gemcook
- License: mit
- Created: 2021-04-28T00:51:05.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-11-24T15:31:39.000Z (about 1 year ago)
- Last Synced: 2025-03-29T07:05:15.625Z (10 months ago)
- Topics: error, go, golang
- Language: Go
- Homepage:
- Size: 111 KB
- Stars: 12
- Watchers: 0
- Forks: 3
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# merr
[](https://github.com/gemcook/merr/actions/workflows/analysis.yml) 
`merr` is a package that binds multiple errors.
## Features
`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.
## Installation
```sh
go get -u github.com/gemcook/merr
```
## Usage
```go
import "github.com/gemcook/merr"
```
### Determine if it's an error
```go
multiError := merr.New()
// do something...
// error handling example
if multiError.ErrorOrNil() != nil {
return multiError
}
return nil
```
### Appends error
Appends error to list of errors.
If there is no error list, it creates a new one.
```go
multiError := merr.New()
for i := 0; i < 10; i++ {
if err := something(); err != nil {
multiError.Append(err)
}
}
```
### Print list of error
Prints the object of the list of errors, separated by `,\n`.
```go
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())
```
```text
"something error",
"something error",
.
.
.
"something error"
```
### Pretty print
Prints a list of errors in a well-formatted, easy-to-understand format.
```go
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()
```
```text
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.
```go
buf := bytes.NewBuffer(nil)
merr.SetOutput(buf)
```
## License
MIT License