errors

package
v0.10.0 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2021 License: MIT Imports: 3 Imported by: 9

Documentation

Index

Constants

View Source
const Unknown = "unknown"

Unknown can be used as the fallback class name of error classification.

Variables

This section is empty.

Functions

func Unwrap added in v0.0.20

func Unwrap(err error) error

Unwrap returns the result of calling the Unwrap or Cause methods on the error, otherwise it returns error itself.

func Caller(req *http.Request) error {
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return errors.WithStack(fmt.Errorf("caller: %w", err))
	}
	...
}

if err, is := Unwrap(Caller(req)).(net.Error); is {
	...
}

It is compatible with github.com/pkg/errors and built-in errors since 1.13.

Types

type Classifier added in v0.0.29

type Classifier map[string][]error

Classifier provides functionality to classify errors and represents them as a string, e.g. for metrics system.

func (Classifier) Classify added in v0.0.29

func (classifier Classifier) Classify(err error) string

Classify classifies the error and returns its class name. If it cannot to classify it returns the Unknown.

func (service *Service) Do(ctx context.Context, payload interface{}) {
	resp, err := service.proxy.Call(ctx, Data{Payload: payload})
	if err != nil {
		service.telemetry.Increment(global.Classifier.Classify(err, errors.Unknown))
		...
	}
	...
}

func (Classifier) ClassifyAs added in v0.0.29

func (classifier Classifier) ClassifyAs(class string, list ...error) Classifier

ClassifyAs unwraps the errors and stores them with the class name.

classifier := make(errors.Classifier).
	ClassifyAs("network", new(errors.NetworkError)).
	ClassifyAs("fs", os.ErrExist, os.ErrNotExist)

func (Classifier) Consistent added in v0.0.29

func (classifier Classifier) Consistent() bool

Consistent checks that different groups don't contain similar errors.

func (Classifier) Merge added in v0.0.30

func (classifier Classifier) Merge(classifiers ...Classifier) Classifier

Merge returns a copy of the current Classifier with data from passed classifiers.

type Message

type Message string

Message represents a textual error.

const ErrInterrupted errors.Message = "operation interrupted"

func Action() error {
	...
}

switch err := Action(); err {
case ErrInterrupted:
	http.Error(..., err.Error(), http.StatusRequestTimeout)
case ...:
	http.Error(..., http.StatusInternalServerError)
}

func (Message) Error

func (err Message) Error() string

Error returns a string representation of the error.

type MessageError added in v0.1.0

type MessageError struct{ Message string }

MessageError can check errors by their error message.

func (MessageError) Error added in v0.1.0

func (matcher MessageError) Error() string

func (MessageError) Is added in v0.1.0

func (matcher MessageError) Is(err error) bool

Is reports whether the error matches message error class.

type NetworkError added in v0.0.29

type NetworkError struct{}

NetworkError can check network errors.

func (*NetworkError) Error added in v0.0.29

func (*NetworkError) Error() string

func (*NetworkError) Is added in v0.0.29

func (*NetworkError) Is(err error) bool

Is reports whether the error matches network error class.

func (*NetworkError) Temporary added in v0.0.29

func (*NetworkError) Temporary() bool

func (*NetworkError) Timeout added in v0.0.29

func (*NetworkError) Timeout() bool

type Recovered added in v0.0.26

type Recovered interface {
	error
	// Cause returns the original cause of panic.
	Cause() interface{}
}

Recovered represents a recovered after panic error.

type RecoveredError added in v0.0.29

type RecoveredError struct{}

RecoveredError can check recovered errors.

func (*RecoveredError) Cause added in v0.0.29

func (*RecoveredError) Cause() interface{}

func (*RecoveredError) Error added in v0.0.29

func (*RecoveredError) Error() string

func (*RecoveredError) Is added in v0.0.29

func (*RecoveredError) Is(err error) bool

Is reports whether the error matches recovered error class.

type Retriable added in v0.0.20

type Retriable interface {
	error
	Retriable() bool // Is the error retriable?
}

Retriable represents a retriable action error.

It is compatible with github.com/kamilsk/retry (v4 and later).

type RetriableError added in v0.0.29

type RetriableError struct{}

func (*RetriableError) Error added in v0.0.29

func (*RetriableError) Error() string

func (*RetriableError) Is added in v0.0.29

func (*RetriableError) Is(err error) bool

Is reports whether the error matches retriable error class.

func (*RetriableError) Retriable added in v0.0.29

func (*RetriableError) Retriable() bool

type TemporaryError added in v0.0.29

type TemporaryError struct{}

TemporaryError can check temporary errors.

func (*TemporaryError) Error added in v0.0.29

func (*TemporaryError) Error() string

func (*TemporaryError) Is added in v0.0.29

func (*TemporaryError) Is(err error) bool

Is reports whether the error matches temporary error class.

func (*TemporaryError) Temporary added in v0.0.29

func (*TemporaryError) Temporary() bool

type TimeoutError added in v0.0.29

type TimeoutError struct{}

TimeoutError can check timeout errors.

func (*TimeoutError) Error added in v0.0.29

func (*TimeoutError) Error() string

func (*TimeoutError) Is added in v0.0.29

func (*TimeoutError) Is(err error) bool

Is reports whether the error matches timeout error class.

func (*TimeoutError) Timeout added in v0.0.29

func (*TimeoutError) Timeout() bool

Jump to

Keyboard shortcuts

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