请求创建账户的接口错
来源:5-21 资金账户-转账web接口编程实践
潇洒哥gogo
2020-06-07
老师,您好!
请求创建账户接口的时候报这个,是什么情况造成的?可以加一个您的微信吗?
学习过程中遇到各种各样的问题,比如包拉不下来,https://goproxy.cn/github.com/rifflock/lfshook/@v/list
希望学习的过程中不要被这种依赖的总是给耽误太长的时间
1回答
-
枫荇
2020-06-09
同学!你好!
包拉不下来的问题可以尝试使用多个代理和直连来解决:GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy,https://goproxy.io,direct
另外,学习golang任何人都要面对某些包在某些时候下载失败或者超时的问题,这是客观存在的问题,在遇到这些问题时首先要冷静,检查错误信息,根据错误信息进行排查和尝试已知的方法,如果还是不行再尝试使用百度和谷歌进行问题搜索,注意关键字。
基本解决的思路:
系统库和谷歌官方库:可以采用代理和包替换(replace)的方式。
其他库:使用代理,建议采用多个国内代理,也可以添加国外代理作为备份,最终一定要有直连。
在学习过程中,一定会遇到这样那样的问题,一定不会一帆风顺,遇到问题越多的同学,如果把这些问题解决了,其能力提升会越快也越高。同样,编程过程中,出现问题是客观存在的,每个coder都要面对的问题。
常见问题的排查思路:
看发生了什么?
提示的信息是什么?
问题是业务逻辑达不到预期出现的还是代码出错出现的?
查看后台日志,看出错时后台输出的日志内容,检查日志中是否有错误信息?PS:这也是合适的地方输出不同级别日志的重要性
就同学的这个问题来说:
前段:API调用中提示`Inner Server Error`,从信息上看是服务器内部错误,这个时候同时查看一下返回的状态码是否为50x。
后端日志中提示:空指针错误,同时再空指针错误之前有一行warn级别的错误,看错误信息
从错误信息中可以看到,是web框架中提示的,并且是recover住的,那么说明是自己的web部分的程序出错了,继续看,
可以看到是出错代码的函数。
但由于同学没有把出错的堆栈信息截图放出来,所以这里很难确定是那行代码或者说哪个变量出现了空指针错误。
从代码中看:
如果是第78行`r.Code = base.ResCodeInnerServerError`出错,应该会有第80行错误日志输出:`logrus.Error(err)`。
同学的代码中没有错误日志输出,可以断定应该不是这一行代码出错,那么我们再看一遍代码,看看那些地方可能会发生空指针异常呢?整个函数中,最可能发生空指针异常的就是第76行中a.service,`dto, err := a.service.CreateAccount(account)
`如果a.service没有正确赋值,那么一定会出现空指针异常,并且这个空指针异常会被iris框架recover住的。
所以,同学请检查一下,a.service是否正确被赋值。
00