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

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

Go 中的自定義錯誤處理

Go 中的自定義錯誤處理

Go
翻閱古今 2021-06-03 13:32:57
我仍然不相信我確切地知道如何獲取自定義錯誤,我可以從我的函數返回并在它們之外處理這些錯誤。這就是我目前正在做的事情:func doSomething() int {    x := 0    // Do something with x.    ...    if somethingBadHappened {        return -1    }    if somethingElseBadHappened {        return -2    }    return x}這就是我想做的事情:func doSomething() int, ? {    ...    if somethingBadHappened {        return ?, err    }    if somethingElseBadHappened {        return ?, err2    }    return x, nil}但我不確定如何以及用什么來替換這些問號。
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

我會轉


func doSomething() int, ? {

        ...

        if somethingBadHappened {

                return ?, err

        }


        if somethingElseBadHappened {

                return ?, err2

        }


        return x, nil

}

進入


func doSomething() (r int, err error) {


        ...


        if somethingBadHappened {

                err  = err1 // Whatever satisfies the `error` interface

                return

        }


        if somethingElseBadHappened {

                err = err2 // dtto

                return

        }


        return x, nil

}

IOW,在調用站點,如果 err != nil,則忽略、從不使用或依賴任何其他返回值是慣用的*,所以只要不關心r上面是否已分配了一些中間值。


(*) 在第一個近似值中,即如果沒有另外說明。例如,一個io.Reader顯式聲明它可以同時返回err == io.EOF有效數據:


當 Read 在成功讀取 n > 0 個字節后遇到錯誤或文件結束條件時,它返回讀取的字節數。它可能會從同一個調用中返回(非零)錯誤或從后續調用中返回錯誤(和 n == 0)。這種一般情況的一個實例是,在輸入流末尾返回非零字節數的 Reader 可能返回 err == EOF 或 err == nil。不管怎樣,下一個 Read 應該返回 0,EOF。


查看完整回答
反對 回復 2021-06-07
  • 2 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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