为了账号安全,请及时绑定邮箱和手机立即绑定

处理错误很无聊

处理错误很无聊

Go
海绵宝宝撒 2021-09-13 16:20:26
我有一个结构体,它有一个提供响应的方法。type ctrl struct {    *base.AjaxCtrl    file ini.File}func (rcv *ctrl) getVar() string {    return mux.Vars(rcv.Req)["location"]}func (rcv *ctrl) getFile() string {    return location.JoinPaths(folder, rcv.getVar()+ext)}func (rcv *ctrl) upload() {    file, err := ini.LoadFile(rcv.getFile())    if err != nil {        rcv.AddErr("TextError", err.Error())        return    }    rcv.file = file}// Convert text to json structurefunc (rcv *ctrl) convertToJson() string {    js, err := json.Marshal(rcv.file.Section("text/signup"))    if err != nil {        rcv.AddErr("ConvertError", err.Error())        return ""    }    return string(js)}func (rcv *ctrl) serveHttp() (types.SuccsJSON, types.ErrorsJSON) {    rcv.upload()    if rcv.AnyErrors() {        return nil, rcv.Errs    }    str := rcv.convertToJson()    if rcv.AnyErrors() {        return nil, rcv.Errs    }    return c.Sucss, nil}方法 serveHttp() 处理对客户端的响应。如您所见,我每次都使用 AnyError() 方法处理错误。我发现这种方式很无聊,而且可能是错误的设计。抛出恐慌而不是错误处理会更好吗?func (rcv *ctrl) upload() {    file, err := ini.LoadFile(rcv.getFile())    if err != nil {        rcv.AddErr("TextError", err.Error())        panic()    }    rcv.file = file}
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

不,不会更好。在 Go 中检查错误并不是一个糟糕的设计。另一方面,在没有理由恐慌时恐慌糟糕的设计,因为它更难测试和调试。

panic当错误不可恢复且程序状态无法修复时,Go Wiki明确不鼓励使用真正的例外情况。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信