目的
解决代码中复杂的if...else语句 ,当遇到阻止程序继续正常运行的情况时,使用人为抛出异常的方式代替if...else。
创建自定义异常类
自定义异常类的目的是 因为异常有很多种,我们这里解决的异常只是程序业务实现中的异常
自定义的异常类继承Exception类
public class BusinessException extends Exception{
public BusinessException(String message){
super(message);
}
}
和枚举类信息融合,优化使用吗,枚举类代码也可以这么写
public class BusinessException extends Exception {
public BusinessException(MessageMeta messageMeta){
super(messageMeta.getMsg());
}
}
这样在throw new BusinessException(“”)时就不需要再调用枚举类的getMsg()方法了
使用try catch来接受处理异常
在serviceImpl层的异常抛出来并在Controllor层中接受处理
@Override
public LuckyMoney receiveLuckyMoney(LuckyMoney luckyMoney) throws BusinessException {
LuckyMoney result;
LuckyMoney verify = luckyMoneyMapper.findById(luckyMoney.getId());
if (verify == null) {
throw new BusinessException(MessageType.noId.getMsg());
}
if (verify.getConsumer() != null) {
//String.format()
throw new BusinessException(String.format(MessageType.receiveByOthers.getMsg(), verify.getConsumer()));
}
if (luckyMoneyMapper.update(luckyMoney) == 0) {
throw new BusinessException(MessageType.receiveError.getMsg());
}
result = luckyMoneyMapper.findById(luckyMoney.getId());
return result;
}
在Controllor层对该方法进行try catch 并对异常进行处理
@PutMapping("/receive")
public ResultUtils receiveLuckyMoney(LuckyMoney luckyMoney){
ResultUtils resultUtils;
try {
resultUtils = ResultUtils.success(luckyMoneyService.receiveLuckyMoney(luckyMoney)) ;
}catch (BusinessException e){
log.info("",e);
resultUtils = ResultUtils.error(e.getMessage());
}
return resultUtils;
}