3 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
它是一個(gè)服務(wù)器,處理程序不應(yīng)返回錯(cuò)誤,因?yàn)閾?jù)說您應(yīng)該簡(jiǎn)單地通知客戶端在處理請(qǐng)求時(shí)遇到了錯(cuò)誤。判斷錯(cuò)誤類型并輸出相應(yīng)的http代碼和可選的消息體。
現(xiàn)在,如果碰巧你的服務(wù)器有一些其他的 goroutines 需要被通知你可以通過一個(gè)通道向他們發(fā)送錯(cuò)誤信號(hào)(用于指標(biāo)或類似的東西),所以你可以以任何你希望的方式使用錯(cuò)誤在處理程序范圍之外。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
不會(huì)編譯 b/c http.HandlerFunc 不會(huì)返回返回 AppError 的函數(shù)。
為什么不直接在 makeUpdate 方法中處理錯(cuò)誤?
如果我使用 AppError 作為返回值,如何避免顯式返回 nil?
不能在返回參數(shù)中使用 'nil' 作為 AppError 類型,您可以使用初始值,如下所示:
func test() AppError {
ret := AppError{
200, "OK",
}
condition := true // some condition
if !condition {
ret.Status = 500
ret.Message = "internal error"
}
return ret
}

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
因此,go 的設(shè)計(jì)者沒有返回請(qǐng)求的狀態(tài),而是給了您ResponseWriter。這是您與客戶的主要互動(dòng)。例如設(shè)置一個(gè)狀態(tài)碼,做WriteHeader(500)
。
- 3 回答
- 0 關(guān)注
- 192 瀏覽
添加回答
舉報(bào)