Skip to content

Commit 7a5211b

Browse files
committed
fix
1 parent 8c5e804 commit 7a5211b

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

errors/errors.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,18 @@ func (x *Error) WithMetadata(m map[string]string) *Error {
116116
return err
117117
}
118118

119+
func (x *Error) AppendMetadata(m map[string]string) *Error {
120+
if m == nil || len(m) == 0 {
121+
return x
122+
}
123+
124+
err := proto.Clone(x).(*Error)
125+
for k := range m {
126+
err.Metadata[k] = m[k]
127+
}
128+
return err
129+
}
130+
119131
func (x *Error) Error() string {
120132
return fmt.Sprintf("error: code=%d reason=%s message=%s metadata=%v", x.Code, x.Reason, x.Message, x.Metadata)
121133
}
@@ -133,6 +145,14 @@ func Code(err error) int32 {
133145
return 2 // unknown
134146
}
135147

148+
func Wrap(err error) *Error {
149+
if err == nil {
150+
return nil
151+
}
152+
153+
return &Error{Reason: err.Error(), Message: fmt.Sprintf("%#v", err), Metadata: make(map[string]string)}
154+
}
155+
136156
// New generates a custom error.
137157
func New(reason string, msg string, args ...interface{}) *Error {
138158
return &Error{Reason: reason, Message: fmt.Sprintf(msg, args...), Metadata: make(map[string]string)}

0 commit comments

Comments
 (0)