1.问题表现
一个正常的请求到后端,没有任何的返回,通过日志和断点确定手动抛了一个应该被全局异常处理器捕获的异常。
代码比较敏感不方便贴,也比较偷懒不写demo了,这里就直接说了。
问题排查
1.首先确保全局异常捕获器正常被spring加载
2.排除业务代码的问题,判断应该是其他的注解影响到了正常的异常捕获
通过断点排除了@Transactional注解吞掉了异常,因为这个注解会继续往外抛异常,断点跟踪一下就知道了。
问题出在一个自定义注解上。
这个注解在@Around方法内捕获了joinPoint.proceed抛出的任何异常,并且只做了打印,没有继续往外抛,这个异常只能走到这里,没法被全局异常处理器捕获。
也解释了这个请求没有任何返回的原因,因为异常对程序来说就是一个return,所以程序也不会走到BaseReponse的正常return里。
到此结束,收工。
网友评论