【发布时间】:2019-03-13 22:24:19
【问题描述】:
在 http 处理程序中处理 Write 错误的最佳方法是什么。
func hello(w http.ResponseWriter, r *http.Request) {
n, err := w.Write([]byte("hi"))
// how should we handle this error?
}
我想我可以取 n 并尝试用剩余的字节再次写入。
【问题讨论】:
-
@ThunderCat 我知道。我的问题是如果我不想忽略如何处理这个错误
-
你可以记录它,返回一个http服务器错误,或者忽略它。什么是“最好的”取决于你。
-
@johlo:此时不太可能出现临时错误。通常有很多层缓冲来自实际网络连接的调用者。您更有可能看到
ErrContentLength、ErrBodyNotAllowed、ErrHijacked等内容。 -
好点,在大多数情况下尝试返回服务器错误可能是不可行的,或者即使这样做也值得。
-
你能做的最好的就是记录错误。网络层的错误通常是因为数据无法发送到对等方。没有任何恢复。指示程序员错误的错误(ErrHijacked、ErrContentLength、...)需要代码修复。