| 1234567891011121314151617181920212223242526272829 |
- // +build !go1.13
- package errors
- // Cause recursively unwraps an error chain and returns the underlying cause of
- // the error, if possible. An error value has a cause if it implements the
- // following interface:
- //
- // type causer interface {
- // Cause() error
- // }
- //
- // If the error does not implement Cause, the original error will
- // be returned. If the error is nil, nil will be returned without further
- // investigation.
- func Cause(err error) error {
- type causer interface {
- Cause() error
- }
- for err != nil {
- cause, ok := err.(causer)
- if !ok {
- break
- }
- err = cause.Cause()
- }
- return err
- }
|