亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

處理錯誤很無聊

處理錯誤很無聊

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 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號