在9-5章controller取消订单中,为了测试错误页面,需要传入一个错误的orderId,先使用orderService查询,然后捕捉异常,

来源:9-5 卖家订单-controller-取消订单

悟空不悟空

2018-04-14

但是我的spring boot版本是2.0的,所以orderRepository需要在findById()后面加上get()方法,此时这段代码是这样OrderMaster orderMaster = orderMasterRepository.findById(orderId).get();
所以在传入错误的orderId()后,并不会进入if(orderMaster==null){throw new SellException(ResultEnum.ORDER_NOT_EXIST);
}
即没有抛出SellException,所以controller不会捕获这个异常。而是在get()方法这里出错。http://img.mukewang.com/szimg/5ad1f7b4000185c618790968.jpg

http://img.mukewang.com/szimg/5ad1f83e0001262217410702.jpg

写回答

3回答

廖师兄

2018-04-16

findById返回是optional对象,不能直接在后面加get。保持版本一致,先把课程学完。

3
3
没时间解释
回复
悟空不悟空
可以的,
2019-01-16
共3条回复

杨勤_cd

2018-12-25

findById(id).orelse(null)即可进入错误分支

0
0

addictedleo

2018-12-22

我用的2.1.1也遇到同样的问题了,不过我把

OrderMaster orderMaster=orderMasterRepository.findById(orderId);

改成下面这样就OK了:

Optional<OrderMaster> orderMaster=orderMasterRepository.findById(orderId);


0
1
悟空不悟空
还是要判断ordermaster.ispresent(),跟上面是一样的
2018-12-22
共1条回复

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程