Skip to content

Proposal: Optional cause #89

Description

@sheenobu

The current errors.Cause method will gladly return a nil'error if given a nil error (this is expected). However, if the bottom of your error stack is a Causer that also returns nil, Cause returns nil. Example here: https://play.golang.org/p/wQa9urzGX8

The proposed change is simple enough as checking for nil in the errors.Cause loop (If there are additional complexities I haven't considered, please let me know).

funcCause(errerror) error {
typecauserinterface {
Cause() error
}
forerr!=nil {
cause, ok:=err.(causer)
if!ok {
break
}
iferr2:=cause.Cause(); err2!=nil {
err=err2
} else {
break
}
}
returnerr
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions