keel/errors/wrappederror.go
2022-11-26 00:25:43 +01:00

36 lines
635 B
Go

package keelerrors
import "errors"
type wrappedError struct {
err error
cause error
}
func NewWrappedError(err, cause error) error {
return &wrappedError{
err: err,
cause: cause,
}
}
func (e *wrappedError) As(target interface{}) bool {
return errors.As(e.err, target) || errors.As(e.cause, target)
}
func (e *wrappedError) Is(target error) bool {
return errors.Is(e.err, target) || errors.Is(e.cause, target)
}
func (e *wrappedError) Cause() error {
return e.cause
}
func (e *wrappedError) Unwrap() error {
return e.err
}
func (e *wrappedError) Error() string {
return e.err.Error() + ": " + e.cause.Error()
}