Skip to content

Commit 7acc1e7

Browse files
committed
feat: add recovery to encode/decode
1 parent 9892035 commit 7acc1e7

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

encode.go

+14-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import (
77
)
88

99
// Encode a Go interface into a Value interface.
10-
func Encode(v interface{}) (Value, error) {
10+
func Encode(v interface{}) (val Value, err error) {
11+
defer func() {
12+
if r := recover(); r != nil {
13+
err = fmt.Errorf("recovered: %v", err)
14+
return
15+
}
16+
}()
1117

1218
// If the interface is already a value, then immediately return the
1319
// interface without modification.
@@ -126,7 +132,13 @@ func Encode(v interface{}) (Value, error) {
126132

127133
// Decode a Value interface into a Go interface. The Go interface must be a
128134
// pointer.
129-
func Decode(interf interface{}, v Value) error {
135+
func Decode(interf interface{}, v Value) (err error) {
136+
defer func() {
137+
if r := recover(); r != nil {
138+
err = fmt.Errorf("recovered: %v", err)
139+
return
140+
}
141+
}()
130142

131143
// If the interface-to-be-decoded-into is a value, then check the type of
132144
// the value-to-be-decoded, and assign.

0 commit comments

Comments
 (0)