errorz

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: MIT Imports: 11 Imported by: 12

Documentation

Overview

Package errorz provides various utilities for working with errors.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func As

func As[T any](err error) (T, bool)

As provides a more handy implementation of errors.As using generics.

func Assertf

func Assertf(cond bool, format string, a ...any)

Assertf is like MustErrorf if cond is false, does nothing otherwise.

func Catch0 added in v0.4.0

func Catch0(f func() error) (outErr error)

Catch0 catches panics in a "func() error" closure.

func Catch0Ctx added in v0.4.0

func Catch0Ctx(ctx context.Context, f func(ctx context.Context) error) (outErr error)

Catch0Ctx catches panics in a "func(context.Context) error" closure.

func Catch1 added in v0.4.0

func Catch1[T any](f func() (T, error)) (outV T, outErr error)

Catch1 catches panics in a "func() (T, error)" closure.

func Catch1Ctx added in v0.4.0

func Catch1Ctx[T any](ctx context.Context, f func(ctx context.Context) (T, error)) (outV T, outErr error)

Catch1Ctx catches panics in a "func(context.Context) (T, error)" closure.

func Catch2 added in v0.4.0

func Catch2[T1 any, T2 any](f func() (T1, T2, error)) (outV1 T1, outV2 T2, outErr error)

Catch2 catches panics in a "func() (T1, T2, error)" closure.

func Catch2Ctx added in v0.4.0

func Catch2Ctx[T1 any, T2 any](ctx context.Context, f func(ctx context.Context) (T1, T2, error)) (outV1 T1, outV2 T2, outErr error)

Catch2Ctx catches panics in a "func(context.Context) (T1, T2, error)" closure.

func Catch3 added in v0.4.0

func Catch3[T1 any, T2 any, T3 any](f func() (T1, T2, T3, error)) (outV1 T1, outV2 T2, outV3 T3, outErr error)

Catch3 catches panics in a "func() (T1, T2, T3, error)" closure.

func Catch3Ctx added in v0.4.0

func Catch3Ctx[T1 any, T2 any, T3 any](ctx context.Context, f func(ctx context.Context) (T1, T2, T3, error)) (outV1 T1, outV2 T2, outV3 T3, outErr error)

Catch3Ctx catches panics in a "func(context.Context) (T1, T2, T3, error)" closure.

func Errorf

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

Errorf creates an error and wraps it.

func Flatten added in v0.8.0

func Flatten(err error) []error

Flatten recursively unwraps the error and returns a slice of all unwrapped errors, from innermost to outermost.

func GetHTTPStatus added in v0.8.0

func GetHTTPStatus(err error, def int) int

GetHTTPStatus attempts to get a meaningful, stable HTTP status for the given error. It returns "def" if an HTTP status cannot be found.

func GetName added in v0.7.0

func GetName(err error, def string) string

GetName attempts to get a meaningful, stable name for the given error. It returns "def" if a name cannot be found.

func IgnoreClose

func IgnoreClose(c io.Closer)

IgnoreClose calls io.Closer.Close, ignoring the returned error. Handy for the "defer Close" pattern.

func MaybeGetMetadata added in v0.6.0

func MaybeGetMetadata[T any](err error, k any) (T, bool)

MaybeGetMetadata tries to get the given metadata key from the error.

func MaybeMustWrap

func MaybeMustWrap(err error, outerErrs ...error)

MaybeMustWrap is like MustWrap, but does nothing if called with a nil error.

func MaybeSetMetadata added in v0.6.0

func MaybeSetMetadata(err error, k, v any)

MaybeSetMetadata sets the given metadata (k, v) on the error if it has been wrapped, does nothing otherwise.

func MaybeWrap

func MaybeWrap(err error, outerErrs ...error) error

MaybeWrap is like Wrap, but returns nil if called with a nil error.

func MaybeWrapRecover

func MaybeWrapRecover(r any, outerErrs ...error) error

MaybeWrapRecover is like WrapRecover but returns nil if called with a nil value.

func MustClose

func MustClose(c io.Closer)

MustClose calls io.Closer.Close, panicking in case of error. Handy for the "defer Close" pattern.

func MustErrorf

func MustErrorf(format string, a ...any)

MustErrorf is like Errorf but panics with the wrapped error instead of returning it.

func MustGetMetadata added in v0.6.0

func MustGetMetadata[T any](err error, k any) T

MustGetMetadata gets the given metadata key from the error, panics if not found or wrong type.

func MustWrap

func MustWrap(innerErr error, outerErrs ...error)

MustWrap is like Wrap, but panics with the wrapped error instead of returning it.

func SDump

func SDump(err error) string

SDump converts the error to a string representation for debug purposes.

func Unwrap added in v0.8.0

func Unwrap(err error) []error

Unwrap is similar to errors.Unwrap but works for errors implementing either UnwrapSingle and UnwrapMulti.

func Wrap

func Wrap(err error, outerErrs ...error) error

Wrap wraps the given errors.

func WrapRecover

func WrapRecover(r any, outerErrs ...error) error

WrapRecover takes a recovered value and converts it to a wrapped error.

Types

type ErrorHTTPStatus added in v0.8.0

type ErrorHTTPStatus interface {
	GetErrorHTTPStatus() int
}

ErrorHTTPStatus can be implemented by errors to attach an HTTP status to themselves.

type ErrorName added in v0.8.0

type ErrorName interface {
	GetErrorName() string
}

ErrorName can be implemented by errors to return a name different from their Go type.

type Frame

type Frame struct {
	Summary       string `json:"summary,omitempty"`
	Location      string `json:"location,omitempty"`
	ShortLocation string `json:"shortLocation,omitempty"`
	Package       string `json:"fullPackage,omitempty"`
	ShortPackage  string `json:"package,omitempty"`
	Function      string `json:"function,omitempty"`
	FileAndLine   string `json:"fileAndLine,omitempty"`
	File          string `json:"file,omitempty"`
	Line          int    `json:"line,omitempty"`
}

Frame describes a frame.

func NewFrame

func NewFrame(frameFunction string, file string, line int) *Frame

NewFrame initializes a new frame.

type Frames

type Frames []*Frame

Frames describes a stack of frames.

func GetFrames

func GetFrames(err error) Frames

GetFrames returns the frames from the error, or the current frames the error is not wrapped or is nil.

func (Frames) ToSummaries

func (f Frames) ToSummaries() []string

ToSummaries converts the frames to a slice of frame summaries.

type UnwrapMulti

type UnwrapMulti interface {
	Unwrap() []error
}

UnwrapMulti describes a method which returns multiple errors.

type UnwrapSingle

type UnwrapSingle interface {
	Unwrap() error
}

UnwrapSingle describes a method which returns a single error.

Jump to

Keyboard shortcuts

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