Clean up error handling a bit.

This commit is contained in:
Alec Thomas
2018-11-03 09:49:00 +11:00
parent c0df056b14
commit fddfb973d6
4 changed files with 48 additions and 20 deletions
+6 -1
View File
@@ -271,7 +271,12 @@ func (v *Value) IsBool() bool {
func (v *Value) Parse(scan *Scanner, target reflect.Value) error {
defer func() {
if err := recover(); err != nil {
panic(fmt.Sprintf("mapper %T failed to apply to %s: %s", v.Mapper, v.Summary(), err))
switch err := err.(type) {
case Error:
panic(err)
default:
panic(fmt.Sprintf("mapper %T failed to apply to %s: %s", v.Mapper, v.Summary(), err))
}
}
}()
err := v.Mapper.Decode(&DecodeContext{Value: v, Scan: scan}, target)