errors

package
v1.2.27 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2023 License: MIT Imports: 2 Imported by: 1

README

Errors

Problem

Builtin errors is very limited in terms of wrapping. The basic wrapping which is offered by builtin loses content we wish to retain for long.

From the repository layer one passes an error of mysql.MySQLError type. which is wrapped at multipe layers of application[repository → usecase1→ usecase2 → super-usecase]. And in the super usecase one want's to do something if the cause is of mysql.MySQLError type.

Solutions

wrapping can be done in the manner. e3 → e2 → e1 → e0 e3 is the top level error and e0 is ground level error. That is how you can do the wrapping.

import "gitlab.com/dotpe/mindbenders/errors"
.
,

e0 := errors.New("base-error")
e1 := errors.WrapMessage(e0, "wrapped e0")
e2 := errors.WrapMessage(e1, "wrapped e1")
e3 := errors.WrapMessage(e2, "wrapped e2")

errors.UnWrap(e3) // -> e2
errors.UnWrap(e2) // -> e1
errors.UnWrap(e0) // -> nil because e0 is the very base error

errors.Cause(e3) // -> e0
errors.Cause(e2) // -> e0
errors.Cause(e1) // -> e0
errors.Cause(e0) // -> e0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultSeparator string = "\n"

Functions

func Cause

func Cause(err error) error

func New

func New(msg string) error

func NewMultiError

func NewMultiError(errs ...error) error

func NewWithCode

func NewWithCode(msg string, code interface{}) error

func NewWithError

func NewWithError(err error) error

func UnWrap

func UnWrap(err error) error

func WrapMessage

func WrapMessage(err error, msg string) error

func WrapMessageWithCode

func WrapMessageWithCode(err error, msg string, code interface{}) error

Types

type BasicError added in v1.2.23

type BasicError struct {
	// contains filtered or unexported fields
}

func (*BasicError) Cause added in v1.2.23

func (e *BasicError) Cause() error

func (*BasicError) Code added in v1.2.23

func (e *BasicError) Code() interface{}

func (*BasicError) Error added in v1.2.23

func (e *BasicError) Error() string

func (*BasicError) String added in v1.2.23

func (e *BasicError) String() string

type MultiError added in v1.2.4

type MultiError interface {
	error
	AddErrors(errs ...error) MultiError
	IsNil() bool
	Err() error
}

func DefaultMultiError added in v1.2.4

func DefaultMultiError() MultiError

Jump to

Keyboard shortcuts

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