我有一个Go应用程序(web服务),它返回json中的错误,如下所示:
{errorString: "internal server error"}这是不好的,因为“内部服务器错误”只是一些程序员错误字符串,对客户端没有用。解决方案是添加错误代码:
{errCode: 1, errorString: "internal server error"}现在,客户端知道1的意思是“内部服务器错误”,可以按需要处理它。例如,为用户消息显示“内部服务器错误”或(在我的例子中)相同的俄语朗。
好的。
所以,很明显,我需要一个文件来描述所有的错误常量。为了前夫。errors.go
const (
ErrNo = iota
// Common Errors
ErrNotFound
ErrInternalServerError
**// More specified errors**
)问题是在更多指定的错误部分。
我有两种方法:
我的控制器由包服务器中的几个文件组成:
clienthandler.go --用于客户端请求,orderhandler.go --用于订单请求等等。
特定客户端错误必须位于clienthandler.go中,顺序错误必须位于orderhandler.go中
但如何才能实现呢?
我知道一个简单的解决方案:对每个控制器进行一些最大错误计数,例如1000。
clienthandler.go
package server
const (
ErrCheckIdCity = 1000*1 + iota
ErrCheckName
)即为该文件保留的1000个错误(从1000个到1999年)。
orderhandler.go
package server
const (
ErrCheckIdCity = 1000*2 + iota
ErrCheckItem
)即为该文件保留的1000个错误(从2000年到2999年间)。
但缺点是我们限制了每个控制器的1000次错误。
也许这是更好的方法?或者我只需要使用一个全局errros.go文件)?
发布于 2015-12-17 12:38:09
将每个错误都放在原点并导出它。
从我的评论中可以看到链接。
var ErrInvalidParam = fmt.Errorf(“invalid parameter [%s]”, param)如果要添加错误代码,请创建新类型的满足错误接口,并添加适当的成员,如errorCode或相关数据。
如果需要,可以创建一个帮助器的构建方法,类似于errors.New所做的
https://stackoverflow.com/questions/34334276
复制相似问题