errorglue

package
v0.4.66 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2023 License: ISC Imports: 9 Imported by: 0

Documentation

Overview

Package errorglue contains non-essential error declarations

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ChainString

func ChainString(err error, format CSFormat) (s string)

ChainString() gets a string representation of a single error chain TODO 220319 finish comment

func DumpChain

func DumpChain(err error) (typeNames string)

DumpChain retrieves a space-separated string of error implementation type-names found in the error chain of err. err can be nil

fmt.Println(Stack(errors.New("an error")))
*error116.errorStack *errors.errorString

func DumpGo added in v0.3.0

func DumpGo(err error) (typeNames string)

DumpGo produces a newline-separated string of type-names and Go-syntax found in the error chain of err. err can be nil

func ErrorChainSlice

func ErrorChainSlice(err error) (errs []error)

ErrorChainSlice returns a slice of errors from a possible error chain. If err is nil, an empty slice is returned. If err does not have an error chain, a slice of only err is returned. Otherwise, the slice lists each error in the chain starting with err at index 0 ending with the oldest error of the chain

func ErrorList added in v0.4.41

func ErrorList(err error) (errs []error)

ErrorList returns all error instances from a possible error chain. — If err is nil an empty slice is returned. — If err does not have associated errors, a slice of err, length 1, is returned. — otherwise, the first error of the returned slice is err followed by

	other errors oldest first.
- Cyclic error values are dropped

func ErrorsWithStack

func ErrorsWithStack(err error) (errs []error)

ErrorsWithStack gets all errors in the err error chain that has a stack trace. Oldest innermost stack trace is returned first. if not stack trace is present, the slice is empty

func GetInnerMostStack

func GetInnerMostStack(err error) (stack pruntime.StackSlice)

GetInnerMostStack gets the oldest stack trace in the error chain

func GetStackTrace

func GetStackTrace(err error) (stack pruntime.StackSlice)

GetStackTrace gets the last stack trace

func GetStacks

func GetStacks(err error) (stacks []pruntime.StackSlice)

GetStacks gets a slice of all stack traces, oldest first

func Indices added in v0.4.29

func Indices(stack pruntime.StackSlice) (isPanic bool, recoveryIndex, panicIndex int)

Indices examines a stack to see if it includes a panic. Thread-safe

  • isPanic is true if the stack includes a panic
  • stack[recoveryIndex] is the code line of the deferred function containing recovery invocation
  • stack[panicIndex] is the code line causing the panic

func IsMinusFlag

func IsMinusFlag(s fmt.State) bool

IsMinusFlag determines if fmt.State has the '-' flag

func IsPlusFlag

func IsPlusFlag(s fmt.State) bool

IsPlusFlag determines if fmt.State has the '+' flag

func IsQuoteVerb

func IsQuoteVerb(r rune) bool

IsQuoteVerb determines if the rune corresponds to the %q quote verb

func IsStringVerb

func IsStringVerb(r rune) bool

IsStringVerb determines if the rune corresponds to the %s string verb

func IsValueVerb

func IsValueVerb(r rune) bool

IsValueVerb determines if the rune corresponds to the %v value verb

func NewErrorData

func NewErrorData(err error, key, value string) (e2 error)

func NewErrorStack

func NewErrorStack(err error, st pruntime.StackSlice) (e2 error)

func NewRelatedError

func NewRelatedError(err, err2 error) (e2 error)

func NewWarning

func NewWarning(err error) error

func RecoverThread added in v0.2.2

func RecoverThread(label string, onError func(err error))

RecoverThread is a defer function for threads. On panic, the onError function is invoked with an error message that contains location information

func WhyNotPanic added in v0.4.29

func WhyNotPanic(err error) (s string)

Types

type CSFormat added in v0.2.2

type CSFormat uint8

CSFormat describes string conversion of an error chain

const (
	// DefaultFormat is similar to printf %v, printf %s and error.Error().
	// For an error with data, stack trace and associated errors,
	// DefaultFormat only prints the error message:
	//   error-message
	DefaultFormat CSFormat = iota + 1
	// ShortFormat has one-line location similar to printf %-v.
	// ShortFormat does not print stack traces, data and associated errors.
	// ShortFormat does print a one-liner of the error message and a brief code location:
	//   error-message at error116.(*csTypeName).FuncName-chainstring_test.go:26
	ShortFormat
	// LongFormat is similar to printf %+v.
	// ShortFormat does not print stack traces, data and associated errors.
	//   error-message
	//     github.com/haraldrudell/parl/error116.(*csTypeName).FuncName
	//       /opt/sw/privates/parl/error116/chainstring_test.go:26
	//     runtime.goexit
	//       /opt/homebrew/Cellar/go/1.17.8/libexec/src/runtime/asm_arm64.s:1133
	LongFormat
	// ShortSuffix one-line without message
	ShortSuffix
	// LongSuffix full stack trace without message
	LongSuffix
)

func PrintfFormat

func PrintfFormat(s fmt.State) CSFormat

PrintfFormat gets the ErrorFormat to use when executing the Printf value verb 'v'

func (CSFormat) String added in v0.4.29

func (csFormat CSFormat) String() (s string)

type ChainStringer

type ChainStringer interface {
	// ChainString is used by ChainStringer() to obtain comprehensive
	// string representations of errors.
	// The argument isIgnore() is used to avoid printing cyclic error values.
	// If a ChainStringer pointer receiver gets a nil value, the empty string is returned.
	// ChainString() obtains a string representation of the errors in its chain.
	// Rich errors implement either ChainStringer or fmt.Formatter
	ChainString(format CSFormat) string
}

ChainStringer obntain s a comprehensive string representation of an error chain. formats used are DefaultFormat ShortFormat LongFormat ShortSuffix LongSuffix

type ErrorCallStacker

type ErrorCallStacker interface {
	StackTrace() pruntime.StackSlice
}

ErrorCallStacker enrichens an error with a stack trace of code locations

type ErrorChain

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

ErrorChain implements a chain of errors. Error chains do exist in the Go standard library but types and interfaces are not public. ErrorChain is used as an embedded type. ErrorChain’s publics are Error() and Unwrap()

ErrorChainSlice returns all errors of an error chain, or the chain can be traversed iteratively using errors.Unwrap()

func (*ErrorChain) Unwrap

func (ec *ErrorChain) Unwrap() error

Unwrap is a method required to make ErrorChain an error chain ErrorChain.Unwrap() is used by errors.Unwrap() and ErrorChainSlice

type ErrorHasCode

type ErrorHasCode interface {
	// Check if this error claims a particular Linux errno, an int
	IsErrno(errno int) (hasErrno bool)
	// ErrorCode determines if this error claims code, a string
	ErrorCode(code string) (hasCode bool)
	// ErrorCodes returns codes that this error claims, some are numeric strings mapping to an errno
	ErrorCodes(codes []string) (has []string)
}

ErrorHasCode allows an error to classify itself

type ErrorHasData

type ErrorHasData interface {
	KeyValue() (key, value string)
}

ErrorHasData enrichens an error with key and value strings

type ErrorStore added in v0.2.2

type ErrorStore interface {
	AddError(err error) (e error)
	GetError() (e error)
	InvokeIfError(fn func(err error))
	Error() (message string)
}

ErrorStore is a thread-safe store for any number of errors

type RelatedError

type RelatedError interface {
	AssociatedError() (error error)
}

RelatedError enrichens an error with an enclosed additional error value

type RichError

type RichError struct {
	ErrorChain
}

RichError is an error chain that behaves like fmt.Formatter. this allows for custom print-outs using %+v and %-v RichError has publics Error() Unwrap() Format()

func (*RichError) Format

func (e *RichError) Format(s fmt.State, verb rune)

Format provides the fmt.Formatter function

type SendNb added in v0.2.2

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

SendNb implements non-blocking send using a thread and buffer up to size of int

func NewSendNb added in v0.4.57

func NewSendNb(errCh chan error) (sc *SendNb)

NewSendNb returns a buffered Send object using errCh

  • errCh may be nil

func (*SendNb) HasChannel added in v0.4.57

func (sc *SendNb) HasChannel() (hasChannel bool)

func (*SendNb) IsShutdown added in v0.4.57

func (sc *SendNb) IsShutdown() (isShutdown bool)

func (*SendNb) Send added in v0.2.2

func (sc *SendNb) Send(err error)

Send sends an error on the error channel. Non-blocking. Thread-safe.

  • if err is nil, nothing is done
  • if SendNb was not initialized with non-zero channel, nothing is done

func (*SendNb) Shutdown added in v0.4.57

func (sc *SendNb) Shutdown()

Shutdown closes the channel exactly once. Thread-safe

type WarningType

type WarningType struct {
	ErrorChain
}

warningType is an error with lesser impact

func (*WarningType) Error

func (w *WarningType) Error() (s string)

Error prepends “Warning: ” to the error message

type Wrapper

type Wrapper interface {
	Unwrap() error // Unwrap returns the next error in the chain or nil
}

Wrapper is an interface indicating error-chain capabilities. It is not public in errors package

Jump to

Keyboard shortcuts

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