springboot项目:try catch无法捕捉自定义异常 思考总结与解决方案

首先这个是我的自定义异常
在这里插入图片描述
注意!!! 最开始我用了两个注解

在这里插入图片描述
这两个注解会自动生成,有参构造和无参构造,虽然我继承了RuntimeException 但是这两个注解(lombok的注解,俗称“小辣椒”),它可不认啊,构造的时候并没有调用super(xxx)父类构造函数,所以你在主函数捕捉异常的时候,如果像我下图这样

在这里插入图片描述
try里面throw的是我的自定义异常,而catch抓的是大类异常,Exception,它肯定捕获不到,因为我的自定义异常在构造的时候,并没有调用父类构造器 !!!!!!

解决方案

解决方法1可以不加lombok的注解,自己写一个调用父类构造器的构造器
在这里插入图片描述
但是这种不太好,你自己都自定义异常了,那肯定属性不止有message,可能还要设计状态码属性,那么调用父类构造器,父类异常并没有状态码等其他属性,你调用父类构造器,就只能往上传一个message属性,自然是不太完整的!

所以我觉得以下解决思路可能会更好

解决方法2 那么,我们在controller层就要catch 我们的自定义异常了,如果担心还有其他异常 那就多catch几次
在这里插入图片描述
因为我这个业务逻辑比较简单,可能出现的异常就这一个,如果担心有别的异常,继续在下面catch就行了! 注意,小异常(空指针异常,数组越界啊等等)先catch,大异常(Exception)后catch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值