This repository has been archived by the owner on Dec 1, 2021. It is now read-only.
Proposal: Optional causeΒ #89
Open
Description
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).
func Cause(err error) error {
type causer interface {
Cause() error
}
for err != nil {
cause, ok := err.(causer)
if !ok {
break
}
if err2 := cause.Cause(); err2 != nil {
err = err2
} else {
break
}
}
return err
}
Activity