ierrors

package module
v0.0.0-...-31dbb72 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: Apache-2.0, BSD-2-Clause Imports: 2 Imported by: 133

Documentation

Overview

ierrors package provides a wrapper around the "errors" package from the standard library of Go. It enhances error handling by adding additional error creation and manipulation functions. This package also supports stacktraces when the "stacktrace" build tag is added.

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 Chain

func Chain(errs ...error) error

Chain chains multiple errors into a single error by wrapping them. Any nil error values are discarded. Chain returns nil if every value in errs is nil. Chain adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func Errorf

func Errorf(format string, args ...any) error

Errorf formats according to a format specifier and returns the string as a value that satisfies error.

If the format specifier includes a %w verb with an error operand, the returned error will implement an Unwrap method returning the operand. If there is more than one %w verb, the returned error will implement an Unwrap method returning a []error containing all the %w operands in the order they appear in the arguments. It is invalid to supply the %w verb with an operand that does not implement the error interface. The %w verb is otherwise a synonym for %v. Errorf adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func Is

func Is(err, target error) bool

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

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

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.

An error type might provide an Is method so it can be treated as equivalent to an existing error. For example, if MyError defines

func (m MyError) Is(target error) bool { return target == fs.ErrExist }

then Is(MyError{}, fs.ErrExist) returns true. See syscall.Errno.Is for an example in the standard library. An Is method should only shallowly compare err and the target and not call Unwrap on either.

func Join

func Join(errs ...error) error

Join returns an error that wraps the given errors. Any nil error values are discarded. Join returns nil if errs contains no non-nil values. The error formats as the concatenation of the strings obtained by calling the Error method of each element of errs, with a newline between each string. Join adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func New

func New(text string) 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 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.

Unwrap returns nil if the Unwrap method returns []error.

func WithMessage

func WithMessage(err error, message string) error

WithMessage appends a message to the error and wraps it into a new error. WithMessage adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func WithMessagef

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

WithMessagef appends a message format specifier and arguments to the error and wraps it into a new error. WithMessagef adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func WithStack

func WithStack(err error) error

WithStack adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func Wrap

func Wrap(err error, message string) error

Wrap prepends an error with a message and wraps it into a new error. Wrap adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

func Wrapf

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

Wrapf prepends an error with a message format specifier and arguments and wraps it into a new error. Wrapf adds a stacktrace to the error if there was no stacktrace in the error tree yet and if the build flag "stacktrace" is set.

Types

This section is empty.

Jump to

Keyboard shortcuts

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