errors

package module
v2.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2023 License: MIT Imports: 10 Imported by: 4

README

go-errors

simple but powerful errors library that allows easy wrapping and stacktracing of errors.

to disable stacktraces set the notrace build tag.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func As

func As(err error, target any) bool

As finds the first error in err's tree that matches target, and if one is found, sets target to that error value and returns true. Otherwise, it returns false.

The tree consists of err itself, followed by the errors obtained by repeatedly calling Unwrap. When err wraps multiple errors, As examines err followed by a depth-first traversal of its children.

An error matches target if the error's concrete value is assignable to the value pointed to by target, or if the error has a method As(interface{}) bool such that As(target) returns true. In the latter case, the As method is responsible for setting target.

An error type might provide an As method so it can be treated as if it were a different error type.

As panics if target is not a non-nil pointer to either a type that implements error, or to any interface type.

func Assignable added in v2.2.0

func Assignable(err error, targets ...error) bool

Assignable is functionally equivalent to calling errors.As() on multiple errors, except that it only checks assignability as opposed to setting the target.

func Comparable added in v2.2.0

func Comparable(err error, targets ...error) bool

Comparable is functionally equivalent to calling errors.Is() on multiple errors (up to a max of 64).

func New

func New(msg string) error

New returns a new error created from message.

func Newf

func Newf(msgf string, args ...interface{}) error

Newf returns a new error created from message format and args.

func Unwrap

func Unwrap(err error) error

Unwrap returns the result of calling the Unwrap method on err, if err's type contains an Unwrap method returning error. Otherwise, Unwrap returns nil.

func Value added in v2.1.0

func Value(err error, key any) any

Value searches for value stored under given key in error chain.

func WithValue added in v2.1.0

func WithValue(err error, key any, value any) error

WithValue wraps err to store given key-value pair, accessible via Value() function.

func Wrap

func Wrap(err error, msg string) error

Wrap will wrap supplied error within a new error created from message.

func Wrapf

func Wrapf(err error, msgf string, args ...interface{}) error

Wrapf will wrap supplied error within a new error created from message format and args.

Types

type Callers

type Callers []uintptr

Callers is a stacktrace of caller PCs.

func GetCallers

func GetCallers(skip int, depth int) Callers

GetCallers returns a Callers slice of PCs, of at most 'depth'.

func Stacktrace

func Stacktrace(err error) Callers

Stacktrace fetches first stored stacktrace of callers from error chain.

func (Callers) Frames

func (f Callers) Frames() []runtime.Frame

Frames fetches runtime frames for a slice of caller PCs.

func (Callers) MarshalJSON

func (f Callers) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler to provide an easy, simple default.

func (Callers) String

func (f Callers) String() string

String will return a simple string representation of receiving Callers slice.

type OnceError

type OnceError struct {
	// contains filtered or unexported fields
}

OnceError is an error structure that supports safe multi threaded usage and setting only once (until reset).

func NewOnce

func NewOnce() OnceError

NewOnce returns a new OnceError instance.

func (*OnceError) IsSet

func (e *OnceError) IsSet() bool

IsSet returns whether OnceError has been set.

func (*OnceError) Load

func (e *OnceError) Load() error

Load will load the currently stored error.

func (*OnceError) Reset

func (e *OnceError) Reset()

Reset will reset the OnceError value.

func (*OnceError) Store

func (e *OnceError) Store(err error)

Store will safely set the OnceError to value, no-op if nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL