首页 新闻 赞助 找找看

spring 的 ExceptionHandler 中关于Exception 转型问题

0
悬赏园豆:50 [已解决问题] 解决于 2019-12-05 10:59

class A extends RuntimeException

class B extends A

业务类中
throw new B

拦截器中
@ExceptionHandler
public String handlerException(Exception e)

if (e instanceof A) 这里判断是false

想问一下原因

睡在下一年的主页 睡在下一年 | 初学一级 | 园豆:161
提问于:2019-12-05 09:38
< >
分享
最佳答案
0

找到原因了。是因为maven热部署插件导致的。
去掉spring-boot-devtools
解决问题的帖子
https://www.jianshu.com/p/6c287d3eb896

睡在下一年 | 初学一级 |园豆:161 | 2019-12-05 10:56
其他回答(3)
0

e是什么类型?你确定e是你throw的B类型吗?也可能是其他的异常。

收获园豆:15
Timetombs | 园豆:3954 (老鸟四级) | 2019-12-05 09:56

业务类中 抛出的是B
拦截器拦截到以后 判断e是不是A 但是得到的结果是false debug 看到的 e 是 B 没有错
而且我再次修改代码时 判断 e instanceof B 得到的结果也是false
不知道是什么原因

支持(0) 反对(0) 睡在下一年 | 园豆:161 (初学一级) | 2019-12-05 10:00
0

是不是代码里有多个B,检查下命名空间对不对

收获园豆:20
会长 | 园豆:12401 (专家六级) | 2019-12-05 10:11
0

应该是不可能的,肯定是你哪里搞错了,你可以把异常类的类型打印出来看下

收获园豆:15
yytxdy | 园豆:1680 (小虾三级) | 2019-12-05 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册