springboot seata 全局捕获异常失效
问题:Spring boot使用@ControllerAdvice或@RestControllerAdvice全局捕获异常时,捕获不到自己抛出的相应异常
首先看一下全局异常组件有么有被扫描到
如何查看,很简单只需要写一段类加载打印代码,如下
如果启动时,打印了你写的字符串就说明启动时被扫描到了
这就说明是其他的问题了,那就只有一种情况:在到达全局异常捕获之前这个异常被处理过了
这就要打断点去看一下抛出的异常在哪里被如何处理了
比如我这里抛出的异常是这样
到springboot实体调用这里是没问题的,这里抛出TargetException就是我们自己抛出的异常
到这里就有问题了,注意看下面,被包装了一层RuntimeException("try to proceed invocation error", var2)异常,我们的异常就被放到RuntimeException异常里面了,到这里后抛出的异常就变成了RuntimeException
这就是使用Seata框架的一个小坑了
然后下一步,到这我们异常就变成了这样,成为了RuntimeException的cause
所以这个地方捕获不到我们抛出的对应异常
所以这里我自己又加了一个全局异常捕获
如果是其他问题也可以通过断点调试找到问题的