errchain
About
Here's Go package for errors chaining for further examining using the standard errors.Is
. You can learn more about working with errors in Go in this article. Explore example below for more understanding.
This package uses module version numbering.
Install
With a correctly configured Go toolchain run:
go get github.com/electrofocus/errchain
Examples
Let's build new error from multiple errors and examine it with errors.Is
:
package main
import (
"errors"
"fmt"
"io"
"net/http"
"os"
"github.com/electrofocus/errchain"
)
func main() {
var (
myErr = errors.New("my err")
err = errchain.New(myErr, io.EOF, os.ErrClosed, http.ErrHijacked)
)
if errors.Is(err, io.EOF) {
fmt.Printf("here we have %q error\n", io.EOF)
}
if errors.Is(err, myErr) {
fmt.Printf("and %q error\n", myErr)
}
if errors.Is(err, os.ErrClosed) {
fmt.Printf("and %q error\n", os.ErrClosed)
}
if errors.Is(err, http.ErrHijacked) {
fmt.Printf("and %q error,\n", http.ErrHijacked)
}
if !errors.Is(err, http.ErrAbortHandler) {
fmt.Printf("but don't have %q error\n", http.ErrAbortHandler)
}
}
Open above example in The Go Playground.