Controller 层中使用 try catch 功能
- public Wrapper billQuery(@RequestBody OrderBillQueryReq orderBillQueryReq){
- log.info("账单列表查询入参:{}", JSON.toJSONString(orderBillQueryReq));
- try {
- PageList<OcOrderBillInfoDto> billList = orderBillService.list(orderBillQueryReq);
- return WrapMapper.ok(new PageVO<>(billList));
- } catch (Exception e) {
- log.error("查询账单列表失败, 错误信息:{}", e.getMessage(),e);
- return WrapMapper.error(e.getMessage());
- }
- }
- }
ServiceImpl 层中是否使用 try catch 功能对 Controller 层的影响
1, 使用 try catch 功能, 抓 Exception
- public PageList<OcOrderBillInfoDto> list(OrderBillQueryReq orderBillQueryReq) {
- try {
- List<Integer> listIN = new ArrayList<>();
- listIN.get(2);
- } catch (Exception e) {
- log.error("错误信息:{}", e.getMessage(),e);
- }
- // 业务逻辑
- return new PageList<>(listModel,pageList.getPaginator());
- }
结果: service 层会打印错误日志, Controller 层不打印错误信息和日志. 但是下面的业务代码会继续执行, 向前端输出正常结果.
[service-xx-bill] 2020-04-08 10:27:27.932 [http-nio-9100-exec-1] ERROR c.w.s.c.bill.service.impl.OrderBillServiceImpl - 错误信息: Index: 2, Size: 0
- java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
- at java.util.ArrayList.rangeCheck(ArrayList.java:657)
- at java.util.ArrayList.get(ArrayList.java:433)
- at xxxxxxxl.OrderBillServiceImpl.list(OrderBillServiceImpl.java:56)
- at xxxxxxx.controller.OrderBillController.billQuery(OrderBillController.java:59)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2, 不使用 try catch 功能.
- public PageList<OcOrderBillInfoDto> list(OrderBillQueryReq orderBillQueryReq) {
- List<Integer> listIN = new ArrayList<>();
- listIN.get(2);
- // 业务逻辑
- return new PageList<>(listModel,pageList.getPaginator());
- }
结果: service 层不打印错误日志, Controller 层打印错误信息和日志. 下面的业务代码不会继续执行, 向前端输出错误信息.
[xxxx-bill] 2020-04-08 10:38:37.259 [http-nio-9100-exec-2] ERROR c.w.s.c.bill.controller.OrderBillController - 查询账单列表失败, 错误信息: Index: 2, Size: 0
- java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
- at java.util.ArrayList.rangeCheck(ArrayList.java:657)
- at java.util.ArrayList.get(ArrayList.java:433)
- at xxxx.bill.service.impl.OrderBillServiceImpl.list(OrderBillServiceImpl.java:55)
- at xxxx.bill.controller.OrderBillController.billQuery(OrderBillController.java:59)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
来源: http://www.bubuko.com/infodetail-3497621.html