errors

package module
v2.1.1 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 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 interface{}) bool

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

The chain consists of err itself followed by the sequence of errors obtained by repeatedly calling Unwrap.

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 Is

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

Is reports whether any error in err's chain matches any of targets (up to a max of 64 targets).

The chain consists of err itself followed by the sequence of errors obtained by repeatedly calling Unwrap.

An error is considered to match a target if it is equal to that target or if it implements a method Is(error) bool such that Is(target) returns true.

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