errs – github.com/zeebo/errs Index | Files | Directories

package errs

import "github.com/zeebo/errs"

Package errs provides a simple error package with stack traces.

Index

Functions

func Combine

func Combine(errs ...error) error

Combine combines multiple non-empty errors into a single error.

func Is

func Is(err, target error) bool

Is checks if any of the underlying errors matches target

func IsFunc

func IsFunc(err error, is func(err error) bool) bool

IsFunc checks if any of the underlying errors matches the func

func New

func New(format string, args ...interface{}) error

New returns an error not contained in any class. This is the same as calling fmt.Errorf(...) except it captures a stack trace on creation.

func Unwrap

func Unwrap(err error) error

Unwrap returns the final, most underlying error, if any, or just the error.

Deprecated: Prefer errors.Is() and errors.As().

func Wrap

func Wrap(err error) error

Wrap returns an error not contained in any class. It just associates a stack trace with the error. Wrap returns nil if err is nil.

func WrapP

func WrapP(err *error)

WrapP stores into the error pointer if it contains a non-nil error an error not contained in any class. It just associates a stack trace with the error. WrapP does nothing if the pointer or pointed at error is nil.

Types

type Causer

type Causer interface{ Cause() error }

Causer is implemented by all errors returned in this package. It returns the underlying cause of the error, or nil if there is no underlying cause.

Deprecated: check for the 'Unwrap()' interface from the stdlib errors package instead.

type Class

type Class string

Class represents a class of errors. You can construct errors, and check if errors are part of the class.

func Classes

func Classes(err error) (classes []*Class)

Classes returns all the classes that have wrapped the error.

func (*Class) Has

func (c *Class) Has(err error) bool

Has returns true if the passed in error (or any error wrapped by it) has this class.

func (*Class) Instance

func (c *Class) Instance() error

Instance creates a class membership object which implements the error interface and allows errors.Is() to check whether given errors are (or contain) an instance of this class.

This makes possible a construct like the following:

if errors.Is(err, MyClass.Instance()) {
	fmt.Printf("err is an instance of MyClass")
}

..without requiring the Class type to implement the error interface itself, as that would open the door to sundry misunderstandings and misusage.

func (*Class) New

func (c *Class) New(format string, args ...interface{}) error

New constructs an error with the format string that will be contained by this class. This is the same as calling Wrap(fmt.Errorf(...)).

func (*Class) Wrap

func (c *Class) Wrap(err error) error

Wrap returns a new error based on the passed in error that is contained in this class. Wrap returns nil if err is nil.

func (*Class) WrapP

func (c *Class) WrapP(err *error)

WrapP stores into the error pointer if it contains a non-nil error an error contained in this class. WrapP does nothing if the pointer or pointed at error is nil.

type Group

type Group []error

Group is a list of errors.

func (*Group) Add

func (group *Group) Add(errs ...error)

Add adds non-empty errors to the Group.

func (Group) Err

func (group Group) Err() error

Err returns an error containing all of the non-nil errors. If there was only one error, it will return it. If there were none, it returns nil.

type Namer

type Namer interface{ Name() (string, bool) }

Namer is implemented by all errors returned in this package. It returns a name for the class of error it is, and a boolean indicating if the name is valid.

Source Files

errs.go group.go is_go1.20.go

Directories

PathSynopsis
errdataPackage errdata helps with associating some data to error classes
Version
v1.4.0 (latest)
Published
May 8, 2023
Platform
js/wasm
Imports
4 packages
Last checked
2 days ago

Tools for package owners.