errors

package module
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2023 License: MIT Imports: 6 Imported by: 0

README

Documentation Build Status CircleCI codecov GolangCI Go Report Card GitHub tag (latest SemVer)

errors

Stdlib errors package extension. go1.13 errors.Is and errors.As are the same functions as in stdlib (not even copies).

// as usual
err = errors.New("msg")

// do not capture caller info
err = errors.NewNoLoc("msg")

// fmt.Sprintf like
err = errors.New("message %v", "args")

// one Frame higher
err = errors.NewDepth(1, "msg")

// the same result as previous
pc := loc.Caller(1)
err = errors.NewLoc(pc, "msg")

// Wrap error
err = errors.Wrap(err, "msg %v", "args")

// all the same function types are available
err = errors.WrapNoLoc(err, "msg")

err = errors.WrapDepth(err, 1, "msg %v", "args")

err = errors.WrapLoc(err, pc, "msg %v", "args")

Caller

Caller frame can be added to error so later you can get to know where error was generated. It's added by default and captures instruction calling errors.(Wrap|New)*.

Caller is moved to a separate module github.com/nikandfor/loc.

pc := loc.Caller(1)

pc = loc.FuncEntry(1)

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 so, sets target to that error value and returns true.

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.

As will panic if target is not a non-nil pointer to either a type that implements error, or to any interface type. As returns false if err is nil.

link to stdlib errors.As

func Is

func Is(err, target error) bool

Is reports whether any error in err's chain matches target.

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.

link to stdlib errors.Is

func New

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

New returns an error that formats as the given text. Each call to New returns a distinct error value even if the text is identical.

func NewCaller added in v0.6.0

func NewCaller(pc PC, f string, args ...interface{}) error

NewCaller returns an error with given PC that formats as the given text. Each call to New returns a distinct error value even if the text is identical.

func NewCallers added in v0.6.0

func NewCallers(pcs PCs, f string, args ...interface{}) error

NewCallers returns an error with given PC that formats as the given text. Each call to New returns a distinct error value even if the text is identical. Experimental, may be deleted at any time.

func NewDepth

func NewDepth(d int, f string, args ...interface{}) error

NewDepth returns an error that formats as the given text. Callsite where error was created (d frames higher) is recorded. Each call to New returns a distinct error value even if the text is identical.

func NewNoCaller added in v0.6.0

func NewNoCaller(f string, args ...interface{}) error

NewNoCaller is like a New but with no caller info.

func NewStack added in v0.6.0

func NewStack(skip, n int, f string, args ...interface{}) error

NewStack returns an error with message formatted in fmt package style. Caller frames are recorded (skipping d frames). Experimental, may be deleted at any time.

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 Wrap

func Wrap(err error, f string, args ...interface{}) error

Wrap returns an error that describes given error with given text. Returns nil if err is nil.

func WrapCaller added in v0.6.0

func WrapCaller(err error, pc PC, f string, args ...interface{}) error

WrapCaller returns an error with given PC that describes given error with given text. Returns nil if err is nil.

func WrapCallers added in v0.6.0

func WrapCallers(err error, pcs PCs, f string, args ...interface{}) error

Experimental, may be deleted at any time.

func WrapDepth

func WrapDepth(err error, d int, f string, args ...interface{}) error

WrapDepth returns an error that describes given error with given text. Callsite where error was created (d frames higher) is recorded. Returns nil if err is nil.

func WrapNoCaller added in v0.6.0

func WrapNoCaller(err error, f string, args ...interface{}) error

WrapNoCaller is like Wrap but without caller info.

func WrapStack added in v0.6.0

func WrapStack(err error, skip, n int, f string, args ...interface{}) error

Experimental, may be deleted at any time.

Types

type Callerer added in v0.6.0

type Callerer interface {
	Caller() PC
}

type Callerser added in v0.6.0

type Callerser interface {
	Callers() PCs
}

type PC added in v0.3.0

type PC = loc.PC

PC is a program counter and represents location in a source code.

type PCs added in v0.6.0

type PCs = loc.PCs

Jump to

Keyboard shortcuts

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