慕虎0442353
如果没有写这个,浏览器会收到500状态码,但是服务器是响应了你的请求的,只不过没有找到对应的用户,也就是业务逻辑出了问题,但是,服务器是正确的响应了你的发的请求,不应该是500错误
qq_慕用2474925
RESTful风格的方法会返回json字符串,
Map<String, Object> responseData = new HashMap<>();
return CommonResultType.create(responseData, "fail");
你把map赋值存入后,它里面自动帮你把map序列化成json字符串,map是键值对,所以你看到打印出来的是一对一对的
data
errCode10002
errMsg未知错误
如果你直接返回
EmBusinessError.UNKNOWN_ERROR
那么就是打印的就是(1002,"未知错误")这样的json串,所以这也就是为什么不直接返回的原因,而要map里面过一遍的原因
qq__1657
weixin_慕瓜0393436
这部分不需要很强的基础,但建议了解Java语法基础、数据库基本操作、SpringBoot框架概念后,准备做项目时再学习
慕后端4009943
断点查看到 都没有走到 if 判断userModel 为空的之后的逻辑,直接查询时就报空指针了
aimutong
加1,我也是运行到这里就出现error了,返回500状态码
qq_慕UI6272856
精慕门9468299
判空一下
UserModel (Integer id) {
UserDO userDO = .selectByPrimaryKey(id)(userDO==){
}
UserpasswordDO userpasswordDO = .selectByUserId(userDO.getId())convertFromDataObject(userDOuserpasswordDO)}不然捕获的异常是空指针异常不是自定义异常,所以报的还是500
wkf1115
重新依赖jdk试一下
qq_慕运维1438640
@RequestBody是获取请求体的数据,@ResponseBody才是把对象转换为json格式数据的注解
shitty_guy_
啊 我找到问题了.....果然有个地方写错了 出现了递归
DangCode
范兵
1、可以把00001换成10001这种是不以0开头的数字
2、可是把00001从Integer换成String格式
R魔法师
嘿亚恒
我自己弄懂了,是因为我代码写错了
if (ex instanceof BusinessException)
我错误的写成了
if (ex instanceof Exception)
老师代码没问题,就是让UserModel==null,就是让它抛出java.lang.NullPointException,然后通过SpringBoot的注解
@ExceptionHandler(Exception.class)
进行拦截,然后自定义处理。
总结:
1、代码一定要跟着敲一遍甚至两遍三遍(我是跟着敲的第二遍,第一遍用了86h,惨不忍睹啊w(゚Д゚)w,这一遍感觉比上一遍顺利一些)
2、敲错不要怕,处理好一个Bug会理解的更加深刻
3、大家加油!
野生的程序猿一只
也可以使用ControolerAdvice
qq_李白的酒卍无味_0
UserServiceImpl.java的改成這樣就行了
UserDo userDo = userDoMapper.selectByPrimaryKey(id);
if(userDo==null){
return null;
}
UserPasswordDo userPasswordDo = userPasswordDoMapper.selectByUserId(userDo.getId());
if (userPasswordDo==null){
return null;
}
return convertFromDataobject(userDo,userPasswordDo);}
慕粉1825368225
你在BaseController里面捕获到未知异常用打印出日志不就行了
魄弹兽
向上转型,这样的好处就是,你还可以新建一个EmRuntimeError实现CommonError,这样直接传参就好了,方法都不用改的。这样就是把具体实现解耦出来。
萧萧篱落
当然可以
幕布斯1296638
慕粉1825368225
你可以打印日志,这样做只是为了前端显示的时候更加优雅。内部什么错误,还是会报出来的
慕沐8284410
没看完视频就提问了 尴尬
慕用5516273
这样写结构比较清晰,这对于后期的维护是很方便的
广州麻辣牛杂档
是的,你不重写就是用父类的方法实现,如果你重写了就会用子类自己方法。
yuanxq
在BusinessException类中,你需要对getErrCode与getErrMsg方法进行定义
weixin_慕粉6405036
在bean上,已经做好处理。,只有在bean上加上注解的异常错误才会被这种类似过滤器的类拦截,并且返回前台,开发对应用户,不能把错误留给用户,体验极差,所以这样做是有好处的,如果你想在控制台上打印错误信息也可以 的
况且已经有错误信息的提示了
2019-01-14 10:08:02.297 WARN 6244 --- [nio-8090-exec-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [com.maioshaproject.error.BusinessException]
xpwi_github_io
慕哥8115446
qq_了不起的岁月_0