登录
首页 >  Golang >  Go问答

处理 Go http 处理程序中 Write 调用错误的最佳实践

来源:stackoverflow

时间:2024-02-29 11:48:23 393浏览 收藏

你在学习Golang相关的知识吗?本文《处理 Go http 处理程序中 Write 调用错误的最佳实践》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

处理 http 处理程序中的 write 错误的最佳方法是什么。

func hello(w http.ResponseWriter, r *http.Request) {
  n, err := w.Write([]byte("hi"))
  // how should we handle this error?
}

我想我可以取出 n 并尝试用剩余的字节再次写入。


解决方案


此时您只会看到两种类型的错误:

  • 网络错误(例如,如果客户端在您尝试发送数据时消失),或者

  • 由服务器中的错误引起的错误(例如如果您手动设置 Content-Length,然后尝试写入比您声明的更多的数据,您将得到 ErrContentLength)。

您可以查看 net/http/server.goresponse 类的实现,以了解您可能从默认 ResponseWriter 中看到的错误。 如何处理这些错误?

  • 对于像 ErrContentLength 这样的错误,它表明服务器中存在错误,记录这些错误似乎是合理的,因为错误消息可能有助于修复服务器。

  • 对我来说,简单地忽略网络错误似乎是合理的,但当然,如果需要的话也可以记录这些错误。

  • Write() 要做的第一件事就是确保发送标头。因此,当您看到 Write() 返回的错误代码时,尝试更改 HTTP 状态代码就为时已晚。鉴于此,似乎不值得尝试(而且可能是不可能的)通知客户出现了问题。

理论要掌握,实操不能落!以上关于《处理 Go http 处理程序中 Write 调用错误的最佳实践》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>