定义统一错误类型AppError并结合中间件实现集中处理,通过自定义HandlerFunc返回error,由ErrorHandler中间件统一输出JSON格式错误响应,避免重复代码,提升可维护性与API稳定性。

在Go语言开发的Web服务中,统一错误处理能提升代码可维护性、增强API的稳定性,并让客户端更容易理解错误原因。直接在每个Handler中写错误处理逻辑会导致重复代码,也不利于全局监控和日志记录。以下是实现统一错误处理的核心思路和实用方法。
使用自定义错误类型可以标准化错误输出,便于JSON响应和状态码管理。
type AppError struct {这样可以在返回时统一结构:
func (e *AppError) Error() string {例如:
立即学习“go语言免费学习笔记(深入)”;
ErrNotFound = &AppError{Code: 404, Message: "资源未找到"}通过包装Handler函数,将返回值设为 error 类型,把错误传递到中间件处理。
type HandlerFunc func(http.ResponseWriter, *http.Request) error然后定义一个适配器,把自定义的 HandlerFunc 转成标准的 http.HandlerFunc:
func ErrorHandler(h HandlerFunc) http.HandlerFunc {这样你的业务Handler就可以返回 error,由中间件统一处理:
func GetUser(w http.ResponseWriter, r *http.Request) error {在 main 函数或路由设置中,使用 ErrorHandler 包装你的处理函数:
http.HandleFunc("/user", ErrorHandler(GetUser))这样所有错误都会被集中处理,响应格式统一,也方便接入日志系统或监控工具(如 Sentry、Prometheus)。
关键点总结:以上就是Golang在Web服务中统一错误处理方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号