抛出异常的方法很好用,但是要配合错误码也就是api里的ErrorCode
但是我们如果不需要错误码,想自己定义一个异常我们就要改写一下他的方法。
这是我写的一个判断方法:
@Override public void examine(List<TbSlsysXmtpfRespVO> examineReqVO) { // 生成提交批次号 String submitBatchNo = NumberGenerate.generateNumber(prefix); // 发送到审批流程 String processInstanceId = bpmUtil.submitToBpm(submitBatchNo, PROCESS_KEY); for (TbSlsysXmtpfRespVO tbSlsysXmtpfRespVO : examineReqVO) { //判断碳排放管理提交审核的每条数据是不是在算力系统里已经审核完成(判断条件为:设备编号、填报日期为同一天) if (tbSlsysSlxtInfoMapper.selectOne(TbSlsysSlxtInfoDO::getTtbSlsysSbbh,tbSlsysXmtpfRespVO.getTtbSlsysSbbh(), TbSlsysSlxtInfoDO::getTtbTbDate,tbSlsysXmtpfRespVO.getTtbTbDate()) != null && tbSlsysSlxtInfoMapper.selectOne(TbSlsysSlxtInfoDO::getTtbSlsysSbbh,tbSlsysXmtpfRespVO.getTtbSlsysSbbh(), TbSlsysSlxtInfoDO::getTtbTbDate,tbSlsysXmtpfRespVO.getTtbTbDate()).getStatus() == 3){ TbSlsysXmtpfDO updateObj = BeanUtils.toBean(tbSlsysXmtpfRespVO, TbSlsysXmtpfDO.class); // 每条数据保存提交批次号 updateObj.setSubBatchNo(submitBatchNo); // 每条数据保存审批流 processInstanceId updateObj.setProcessInstanceId(processInstanceId); updateObj.setStatus(2); tbSlsysXmtpfMapper.updateById(updateObj); }else{ throw exception(tbSlsysXmtpfRespVO.getTtbSlsysSbbh()+"该设备未完成审核"); } } }
我判断这个条数据是不是在另一个表里已经审核完成,如果没有审核完成就抛出异常,只想拼接一个设备编号未完成审核的字符串,让我们ctrl点进去exception里面看看
绿色的就是我新写的方法
抛出方法:
public static ServiceException exception(String msg) { return stringMsg(msg); }
public static ServiceException stringMsg(String messagePattern, Object... params) { return exception0(GlobalErrorCodeConstants.BAD_REQUEST.getCode(), messagePattern, params); }
只是略微改变了参数,不接收错误码的code和msg,只单纯传一个字符串抛给前端显示。
实现: