通过不同的异常,返回不同的提示消息

1、通过 e instanceof BusinessException 来进行区别抛出提示

try 里面的通过判断,进行自定义 throw,具体的就没写,如果想要再添加异常,则必须在 try 里面 throw,catch 才能够捕获。

// try 里面抛了两个自定义异常
// catch 里面进行捕获,根据类型返回不同的提示消息


// 这里的 BusinessException 异常是添加失败
// 这里的 Exception 异常是数据库异常或者表不存在又或者表被改名了......
try {
    throw new BusinessException("添加失败!");
    // throw new Exception("数据库异常!");
} catch (Exception e) {
    if (e instanceof BusinessException) {
        throw new Exception(e.getMessage());
    } else if (e instanceof Exception) {
        throw new BusinessException(msg);
    }
}

// 我的 catch 里面 throw 不一样是因为 BusinessException 里面有自定义拼接的通用字符串。
// 这里面可以一样:catch           里面的                throw

注释的那个异常是写不写都一样(前提是出现这个异常),都能捕获得到,就是都能够进 catch

try 里面的通过判断,进行自定义 throw,上面我就没写。

2、通过 try {} catch () {} catch () {} 来进行区别抛出提示(建议此种方法)

catch里面写异常,大括号里面进行处理,切记,最里面的catch异常是最小的,先执行第一个catch,如果没有才会执行第二个catch,从第一个到后面的等级越来越大。

try {
    throw new BusinessException("添加失败!");
    // throw new Exception("数据库异常!");
} catch (BusinessException e) {
    String msg = "添加失败";
    throw new BusinessException(msg); // throw new Exception(msg)
} catch (Exception e) {
    String msg = "数据库异常!";
    throw new Exception(msg); // throw new BusinessException(msg)
}

// throw 自定义异常根据公司业务需求自定义选择,这里仅仅列举了两个

 

 

    需要注意的是,无论哪一种方式,当程序处理运行异常时候,只能进入特定的一个,如果你想要进入自定义异常,在 try 里面必须抛出来,才会捕获到自定义的异常!!!!其实,换句话说,这篇文章就是讲这个多情况异常的,肯定是需要自定义的,所以 try 里面肯定会抛异常的,只不过根据自己的业务去定具体需要抛几个的问题而已。

    假定情况:这是个添加的方法,而且你需要分 3 种情况,进行区分提示,那么 try 里面只需要抛 2 个自定义的异常即可,catch 里面会有 3 个,多出来的那一个是程序运行时捕获的那个。(一般来说是这样的)

 

 

小贴士:

获取异常类型:e.getClass()

获取异常信息:e.getMessage()

放在输出语句里面即可

 

 

 

总结:

    在 service 里面实现的方法里面进行业务处理,进行 try catch,要注意的是,一般来说都会用一个 try 把代码全部包起来,如果有多个业务处理,需要进行区分,就多写 catch,叫做 try 不够,用 catch 来补。(两种方式,上面有介绍)

    提示消息:是把 msg 以参数的形式,抛给上一层,即放在自定义的异常里面,action 获取到的就是 msg,这一步做到了把代码的异常错误消息,转为自定义提示消息。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值