通八洲科技

如何使用Golang自定义错误码_通过结构体或常量区分错误类型

日期:2025-12-26 00:00 / 作者:P粉602998670
推荐用结构体实现error接口来定义自定义错误码,如AppError含Code、HTTPStatus、Message和Err字段,配合常量枚举与统一响应封装,确保可识别、可扩展、安全可控。

在 Go 中实现自定义错误码,核心是让错误具备可识别的类型、可携带的上下文(如码值、消息、HTTP 状态等),并支持统一处理(比如日志记录、API 响应封装)。推荐用 结构体实现 error 接口 的方式,比纯常量更灵活、可扩展;常量可作为辅助,用于定义清晰的错误码枚举。

用结构体实现可携带错误码的 error 类型

定义一个结构体(如 AppError),内嵌错误信息字段,并实现 Error() 方法。这样既能满足 Go 的 error 接口契约,又能附加业务语义。

用常量定义错误码枚举,提升可维护性

将所有业务错误码集中定义为具名常量,避免魔法数字散落各处。配合 iota 可自动递增,也支持显式赋值以预留扩展空间。

统一错误处理与响应封装

在 HTTP handler 或中间件中,对返回的 error 进行类型断言,提取结构体中的 CodeHTTPStatus,生成标准 JSON 响应。

避免常见误区

结构体错误不是“越重越好”,关键在职责清晰和易用性。