正确处理Go中HTTP请求的错误与状态码:网络错误由error返回,需判空resp避免panic;非200状态码需显式检查StatusCode并读取Body;始终defer resp.Body.Close()防止泄漏。

在Go语言中处理HTTP请求时,错误处理和状态码解析是确保程序健壮性的关键环节。很多开发者容易忽略网络请求中的异常情况,导致程序在生产环境中出现不可预期的行为。本文将重点讲解如何正确处理HTTP请求中的错误,并合理解析响应状态码。
Go的net/http包在发起请求时可能返回多种错误,这些错误通常来自网络层或连接阶段:
只要error不为nil,说明请求未成功发送或未收到响应,此时response对象通常为nil,不能直接读取Body或StatusCode。
即使HTTP请求成功发出并收到响应,服务器也可能返回非200状态码(如404、500)。需要注意的是,这些情况不会导致client.Do返回error,response对象依然有效。
立即学习“go语言免费学习笔记(深入)”;
必须显式检查resp.StatusCode来判断业务层面是否成功:
if resp.StatusCode != 200 {无论请求是否成功,只要resp不为nil,就必须关闭resp.Body以避免内存泄漏:
典型写法:
resp, err := client.Do(req)针对不同状态码可采取差异化处理策略:
可根据实际业务封装通用的响应处理器,统一处理日志、重试、熔断等逻辑。
基本上就这些。掌握错误与状态码的区分处理,能显著提升Go服务的稳定性。关键是不要把网络错误和HTTP语义错误混为一谈。
以上就是Golang HTTP请求错误处理与状态码解析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号