Documentation ¶
Overview ¶
Package errwrap implements methods to formalize error wrapping in Go.
All of the top-level functions that take an `error` are built to be able to take any error, not just wrapped errors. This allows you to use errwrap without having to type-check and type-cast everywhere.
Index ¶
- func Contains(err error, msg string) bool
- func ContainsType(err error, v interface{}) bool
- func Get(err error, msg string) error
- func GetAll(err error, msg string) []error
- func GetAllType(err error, v interface{}) []error
- func GetType(err error, v interface{}) error
- func Walk(err error, cb WalkFunc)
- func Wrap(outer, inner error) error
- func Wrapf(format string, err error) error
- type WalkFunc
- type Wrapper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Contains ¶
Contains checks if the given error contains an error with the message msg. If err is not a wrapped error, this will always return false unless the error itself happens to match this msg.
func ContainsType ¶
ContainsType checks if the given error contains an error with the same concrete type as v. If err is not a wrapped error, this will check the err itself.
func GetAll ¶
GetAll gets all the errors that might be wrapped in err with the given message. The order of the errors is such that the outermost matching error (the most recent wrap) is index zero, and so on.
func GetAllType ¶
GetAllType gets all the errors that are the same type as v.
The order of the return value is the same as described in GetAll.
func Walk ¶
Walk walks all the wrapped errors in err and calls the callback. If err isn't a wrapped error, this will be called once for err. If err is a wrapped error, the callback will be called for both the wrapper that implements error as well as the wrapped error itself.
func Wrap ¶
Wrap defines that outer wraps inner, returning an error type that can be cleanly used with the other methods in this package, such as Contains, GetAll, etc.
This function won't modify the error message at all (the outer message will be used).
func Wrapf ¶
Wrapf wraps an error with a formatting message. This is similar to using `fmt.Errorf` to wrap an error. If you're using `fmt.Errorf` to wrap errors, you should replace it with this.
format is the format of the error message. The string '{{err}}' will be replaced with the original error message.
Types ¶
type Wrapper ¶
type Wrapper interface {
WrappedErrors() []error
}
Wrapper is an interface that can be implemented by custom types to have all the Contains, Get, etc. functions in errwrap work.
When Walk reaches a Wrapper, it will call the callback for every wrapped error in addition to the wrapper itself. Since all the top-level functions in errwrap use Walk, this means that all those functions work with your custom type.