3 回答

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

TA貢獻1816條經驗 獲得超4個贊
不會編譯 b/c http.HandlerFunc 不會返回返回 AppError 的函數。
為什么不直接在 makeUpdate 方法中處理錯誤?
如果我使用 AppError 作為返回值,如何避免顯式返回 nil?
不能在返回參數中使用 '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貢獻1785條經驗 獲得超4個贊
因此,go 的設計者沒有返回請求的狀態,而是給了您ResponseWriter。這是您與客戶的主要互動。例如設置一個狀態碼,做WriteHeader(500)
。
- 3 回答
- 0 關注
- 180 瀏覽
添加回答
舉報