异常处理_人为抛出异常

目的

解决代码中复杂的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;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 八、深入理解java异常处理机制 引子try…catch…finally恐怕是大家再熟悉不过的语句了, 你的答案是...
    壹点零阅读 5,535评论 0 0
  • Java异常类型 所有异常类型都是Throwable的子类,Throwable把异常分成两个不同分支的子类Erro...
    予别她阅读 4,487评论 0 2
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 4,858评论 1 0
  • ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见...
    时待吾阅读 4,739评论 0 1
  • 一. Java基础部分.................................................
    wy_sure阅读 9,239评论 0 11