go-zero lottery项目——封装错误码具体操作流程
go-zero lottery项目——封装错误码具体操作流程
Model层
对于model层的错误应该进行封装。
-
在common/xerr/errCode.go声明错误码
-
在errMsg.go声明对应的错误信息
-
model层对应的错误,进行封装,对应的参数信息也需要加上
errors.Wrapf(xerr.NewErrCode(xerr.DB_FIND_USERID_BYLOTTERYID_ERROR), "FindOne, lotteryId:%v, error: %v", lotteryId, err)
-
第一个参数, ErrUserAlreadyRegisterError 定义在上方 就是使用xerr.NewErrMsg("该用户已被注册") , 返回给前端友好的提示,要记住这里用的是我们xerr包下的方法
第二个参数,就是记录在服务器日志,可以写详细一点都没关系只会记录在服务器不会被返回给前端
RPC层
-
当RPC层调用Model层产生错误的时候不需要封装错误,而是直接把错误向上传递即可
-
如果是RPC层业务逻辑上有错误,需要在RPC层封装统一错误码,操作和Model层类似
API层
- 当RPC层封装完错误后,API层只需要向客户端返回相应错误即可。