想法
Go的异常处理是比较特别的.有人不喜欢这种走两步就 if err
,然而生活就是这样.
func getOrderNo(detail interface{}) (s string, err error) {
defer func() {
if recover() != nil {
err = errors.New("发生错误")
}
}()
panic(err.Error()) //手动触发ERROR
return
}
这是我理解的实现方式之一,在错误可能发生之前,定义好如果发生了错误要做什么.
这样一旦发生错误,唯一会执行的就是defer 后边的 func,recover会捕获发生的错误,手动转化为err对象之后,后续可以作出相应的处理.
网友评论