Categorygithub.com/src-d/go-errors
modulepackage
1.0.0
Repository: https://github.com/src-d/go-errors.git
Documentation: pkg.go.dev

# README

go-errors GoDoc Build Status codecov codebeat badge

Yet another errors package, implementing errors handling primitives, allowing error wrapping and error tracing.

Installation

The recommended way to install go-errors:

go get -u gopkg.in/src-d/go-errors.v1

Examples

The Kind type allows create new errors containing the stack trace and also allows identify errors generated by it.

var ErrExample = errors.NewKind("example")

err := ErrExample.New()
if ErrExample.Is(err) {
	fmt.Printf("%+v\n", err)
}

// Example Output:
// example
//
// gopkg.in/src-d/errors%2v0_test.ExampleError_Format
//         /home/mcuadros/workspace/go/src/gopkg.in/src-d/errors.v0/example_test.go:60
// testing.runExample
//         /usr/lib/go/src/testing/example.go:114
// testing.RunExamples
//         /usr/lib/go/src/testing/example.go:38
// testing.(*M).Run
//         /usr/lib/go/src/testing/testing.go:744
// main.main
//         github.com/pkg/errors/_test/_testmain.go:106
// runtime.main
//         /usr/lib/go/src/runtime/proc.go:183
// runtime.goexit
//         /usr/lib/go/src/runtime/asm_amd64.s:2086

Error with format

var ErrMaxLimitReached = errors.NewKind("max. limit reached: %d")

err := ErrMaxLimitReached.New(42)
if ErrMaxLimitReached.Is(err) {
    fmt.Println(err)
}

// Output: max. limit reached: 42

Error wrapping

var ErrNetworking = errors.NewKind("network error")

err := ErrNetworking.Wrap(io.EOF)
if ErrNetworking.Is(err) {
    fmt.Println(err)
}

// Output: network error: EOF

You can find this examples and many others at the examples file.

License

Apache License 2.0, see LICENSE

# Functions

Any checks if err matches any matchers.
Is check if err matches all matchers.
NewKind returns a Kind with the given msg.
NewStackTrace returns a new StackTrace, skipping the given number of frames, to avoid including the caller.

# Structs

Error represents an error of some Kind, implements the error interface.
Kind represents the kind of an error, from a Kind you can generate as many Error instances as you want of this Kind.
StackTrace is stack of Frames from innermost (newest) to outermost (oldest).

# Interfaces

Matcher matches a given error.