springboot项目:try catch无法捕捉自定义异常 思考总结与解决方案
首先这个是我的自定义异常
注意!!! 最开始我用了两个注解
这两个注解会自动生成,有参构造和无参构造,虽然我继承了RuntimeException 但是这两个注解(lombok的注解,俗称“小辣椒”),它可不认啊,构造的时候并没有调用super(xxx)父类构造函数,所以你在主函数捕捉异常的时候,如果像我下图这样
try里面throw的是我的自定义异常,而catch抓的是大类异常,Exception,它肯定捕获不到,因为我的自定义异常在构造的时候,并没有调用父类构造器 !!!!!!
解决方案
解决方法1可以不加lombok的注解,自己写一个调用父类构造器的构造器
但是这种不太好,你自己都自定义异常了,那肯定属性不止有message,可能还要设计状态码属性,那么调用父类构造器,父类异常并没有状态码等其他属性,你调用父类构造器,就只能往上传一个message属性,自然是不太完整的!
所以我觉得以下解决思路可能会更好
解决方法2 那么,我们在controller层就要catch 我们的自定义异常了,如果担心还有其他异常 那就多catch几次
因为我这个业务逻辑比较简单,可能出现的异常就这一个,如果担心有别的异常,继续在下面catch就行了! 注意,小异常(空指针异常,数组越界啊等等)先catch,大异常(Exception)后catch