美文网首页
日常总结:自定义异常

日常总结:自定义异常

作者: 灿烂的GL | 来源:发表于2021-08-03 11:36 被阅读0次

一、异常处理方式:
1.try-catch语句处理异常,try中的代码执行到异常停止,之外的代码依次会继续执行。
2.如果没有try-catch语句进行异常处理,则由JVM自行处理异常,那么程序会停止到异常处,不会执行后续的代码。


二、自定义异常

引自参考链接1.png
自定义异常继承Exception还是RuntimeException?
Exception:在程序中必须使用try...catch进行处理。
RuntimeException:可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理,就是程序运行的时候会报错。
Exception 的范围更大些,通常我们遇见的都是运行时异常即RuntimeException,RuntimeException可回滚

实例
自定义异常

public class GoodsException extends Exception implements Serializable {

    private static final long serialVersionUID = -2558576087161244731L;

    private Integer code;

    public GoodsException(String message, Integer code) {
        super(message);
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }
}

调用

for (Map.Entry<String, List<GoodsSkuServiceDTO>> i : inputNameMap.entrySet()) {
                    String key = i.getKey();
                    List<GoodsSkuServiceDTO> value = i.getValue();
                    //该商户下新增相同套餐记录大于一条则抛出异常
                    if (value.size() > 1) {
                        log.info("新增,商户:{}套餐:{}重复添加", k, key);
                        throw new GoodsException(StringUtils.join("第" + value.get(0).getLineNumber() + "行" +
                                ExceptionEnum.SKU_REPEAT.getDesc()), ExceptionEnum.SKU_REPEAT.getCode());
                    }
                }

这里需要注意遍历里抛异常循环需要用for,foreach会报错,如果异常不是try...catch...那么每层都要把异常抛出(如:
public Integer addGoodSkuList(List<do> goodsDtoList) throws GoodsException
异常通常涉及到回滚,可以在类上添加注解(@Transactional(rollbackFor = Exception.class
回滚的意思是如果有异常抛出会返回到堆栈的初始化状态

    @Override
    @Transactional(rollbackFor = Exception.class)
    public NewOrderBO addOrderByCronjob(String transactionId) throws OrderException{
        OrderSubscriptionInfoDO orderSubscriptionInfoDO = orderSubscriptionInfoMapper.selectByTransactionId(transactionId);
        if (Objects.isNull(orderSubscriptionInfoDO)){
            throw new OrderException(ExceptionDescEnum.SIGN_NOT_EXIST.getDesc(),ExceptionDescEnum.SIGN_NOT_EXIST.getCode());
        }

参考链接:
1、详解

相关文章

  • 日常总结:自定义异常

    一、异常处理方式:1.try-catch语句处理异常,try中的代码执行到异常停止,之外的代码依次会继续执行。2....

  • JavaSE之异常

    八、异常 目录:什么是异常、异常体系结构、Java异常处理机制、处理异常、自定义异常、总结 1.Error和Exc...

  • 11月3日-4期C语言学习总结

    总结:今天学习第九章异常处理,主要学习异常的定义、为什么要异常、怎么自定义异常、异常处理中怎么嵌套TRY块。下午助...

  • springMVC异常处理

    异常的处理 自定义异常 自定义的异常处理类 当controller中出现异常时,使用自定义异常进行捕获

  • SpringBoot异常处理

    1. 配置全局异常和自定义异常 异常处理类(包括全局和自定义) 自定义异常类 2.返回自定义页面 创建自定义页面位...

  • 自定义异常总结

    注意:对于编译异常,系统什么都不管,所有工作都需要我们自己做(异常的抛出,异常的处理,异常的声明等) 自定义异常:...

  • 10.2.3 自定义异常类

    10.2.3 自定义异常类 系统自带异常处理 自定义异常 test.php

  • 异常的处理

    异常的的处理:抓抛模型 自定义异常 自定义异常 测试类

  • 后端异常统一捕捉

    实现 HandlerExceptionResolver ,对自定义异常进行转换,对非自定义异常统一转化为自定义异常...

  • Java——异常处理的常用方式

    自定义异常 捕获异常

网友评论

      本文标题:日常总结:自定义异常

      本文链接:https://www.haomeiwen.com/subject/hxscpltx.html