目的
解決代碼中復雜的if...else語句 ,當遇到阻止程序繼續(xù)正常運行的情況時,使用人為拋出異常的方式代替if...else。
創(chuàng)建自定義異常類
自定義異常類的目的是 因為異常有很多種,我們這里解決的異常只是程序業(yè)務實現(xiàn)中的異常
自定義的異常類繼承Exception類
public class BusinessException extends Exception{
public BusinessException(String message){
super(message);
}
}
和枚舉類信息融合,優(yōu)化使用嗎,枚舉類代碼也可以這么寫
public class BusinessException extends Exception {
public BusinessException(MessageMeta messageMeta){
super(messageMeta.getMsg());
}
}
這樣在throw new BusinessException(“”)時就不需要再調(diào)用枚舉類的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;
}