Documentation ¶
Overview ¶
Package errors provides errors with structured fields and stack traces. It is a drop-in replacement for stdlib errors and should be used as such throughout the app.
Index ¶
- func As(err error, target any) bool
- func Is(err, target error) bool
- func New(msg string, fields ...z.Field) error
- func NewSentinel(msg string, fields ...z.Field) error
- func SkipWrap(err error, msg string, skip int, fields ...z.Field) error
- func Unwrap(err error) error
- func WithCtxErr(ctx context.Context, wrapMsg string, fields ...z.Field) context.Context
- func Wrap(err error, msg string, fields ...z.Field) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func As ¶
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.
func Is ¶
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.
func New ¶
New returns an error that formats as the given text and contains the structured fields and a stack trace.
func NewSentinel ¶ added in v0.13.0
NewSentinel returns a sentinel error that does not contain a stack trace. Sentinel errors are package level global variables so their creation stack traces do not add value. Sentinel errors should therefor always be wrapped when first returned to add proper stack trace.
Usage:
var ErrNotFound = errors.NewSentinel("not found") func check() error { ok := checkMap["foo"] if !ok { return errors.Wrap(ErrNotFound, "far not found") } return nil } func do() { err := foo() if errors.Is(err, ErrNotFound) { log.Error("Check not found", err) // This stack trace will be the one from the Wrap call, not the package level variable. } }
func SkipWrap ¶ added in v0.2.0
SkipWrap is the same as Wrap, but allows overriding the skipped stacktraces.
func Unwrap ¶
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 WithCtxErr ¶ added in v0.10.1
WithCtxErr returns a copy of the context that wraps the errors returned by context.Err() with the provided message and fields.
Types ¶
This section is empty.