首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在app的每个模块中对错误(常量错误)进行分组的好方法

在app的每个模块中对错误(常量错误)进行分组的好方法
EN

Stack Overflow用户
提问于 2015-12-17 12:10:47
回答 1查看 4.8K关注 0票数 2

我有一个Go应用程序(web服务),它返回json中的错误,如下所示:

代码语言:javascript
复制
{errorString: "internal server error"}

这是不好的,因为“内部服务器错误”只是一些程序员错误字符串,对客户端没有用。解决方案是添加错误代码:

代码语言:javascript
复制
{errCode: 1, errorString: "internal server error"}

现在,客户端知道1的意思是“内部服务器错误”,可以按需要处理它。例如,为用户消息显示“内部服务器错误”或(在我的例子中)相同的俄语朗。

好的。

所以,很明显,我需要一个文件来描述所有的错误常量。为了前夫。errors.go

代码语言:javascript
复制
const (
   ErrNo = iota

   // Common Errors
   ErrNotFound
   ErrInternalServerError

   **// More specified errors**
)

问题是在更多指定的错误部分。

我有两种方法:

  1. 将所有错误定义放在一个文件errors.go中
  2. 尝试在每个相关文件中放置特定错误:

我的控制器由包服务器中的几个文件组成:

clienthandler.go --用于客户端请求,orderhandler.go --用于订单请求等等。

特定客户端错误必须位于clienthandler.go中,顺序错误必须位于orderhandler.go中

但如何才能实现呢?

我知道一个简单的解决方案:对每个控制器进行一些最大错误计数,例如1000。

clienthandler.go

代码语言:javascript
复制
package server

const (
   ErrCheckIdCity = 1000*1 + iota
   ErrCheckName
)

即为该文件保留的1000个错误(从1000个到1999年)。

orderhandler.go

代码语言:javascript
复制
package server

const (
   ErrCheckIdCity = 1000*2 + iota
   ErrCheckItem
)

即为该文件保留的1000个错误(从2000年到2999年间)。

但缺点是我们限制了每个控制器的1000次错误。

也许这是更好的方法?或者我只需要使用一个全局errros.go文件)?

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 12:38:09

将每个错误都放在原点并导出它。

从我的评论中可以看到链接

代码语言:javascript
复制
var ErrInvalidParam = fmt.Errorf(“invalid parameter [%s]”, param)

如果要添加错误代码,请创建新类型的满足错误接口,并添加适当的成员,如errorCode或相关数据。

如果需要,可以创建一个帮助器的构建方法,类似于errors.New所做的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34334276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档