Java【全局异常】无法捕获【环绕通知】
创始人
2025-06-01 13:27:07
0

📚目录

    • 问题:环绕通知异常无法抛出
      • 全局异常处理代码:
      • 日志环绕切面
      • 请求接口
      • 演示效果
      • 解决:
        • 效果

问题:环绕通知异常无法抛出

在系统中自定义了全局异常处理器,无法捕获异常源。

全局异常处理代码:


/*** 全局异常处理* @Author Itmei* @Date 2023/3/22 21:46* @Version 1.0*/
@RestControllerAdvice
public class GlobalExceptionAdvice {/*** 运行时异常* @param e* @return*/@ExceptionHandler(RuntimeException.class)public ResultData handlerRuntimeException(RuntimeException e){return ResultData.error(classErrorRow(e));}/*** 最大的捕获,当前面的捕获处理不了那么就会被该方法捕获* @param e* @return*/@ExceptionHandler(Throwable.class)public ResultData handlerException(Exception e){return ResultData.error(classErrorRow(e));}/*** 返回类报错的行* @param e* @return*/public String classErrorRow(Throwable e) {StackTraceElement[] stackTrace = e.getStackTrace();String classErrorRow = stackTrace[0].toString();String packageNmae = "com.itmei";for (int i = 0; i < stackTrace.length; i++) {StackTraceElement stackTraceElement = stackTrace[i];if (stackTraceElement.toString().contains(packageNmae)) {classErrorRow = stackTraceElement.toString();break;}}return classErrorRow;}
}

日志环绕切面

展示日志环绕的切面,其实看到这里也应该知道,try里面的报错的代码会catch掉所以代码正常运行了,并没有被我们的全局异常捕获到。

在这里插入图片描述

请求接口

请求接口中添加异常,并且在其中的接口中添加日志环绕注解Aop

在这里插入图片描述

演示效果

请求cs1接口 由于try/catch 指打印了错误信息,后置通知也正常走完。

在这里插入图片描述

客户端响应:没有返回值

在这里插入图片描述

请求cs2接口 客户端响应正常捕获到了错误代码行数

在这里插入图片描述

解决:

       在环绕通知里面不要使用try/catch而是直接抛出错误,这样全局异常就可以正常捕获到,但是还是会有问题,比如说抛出后,后置通知和最终通知就不能生效了。

在这里插入图片描述

效果

客户端响应结果:

在这里插入图片描述
通过返回值可以快速知道错误的代码在那个位置上
在这里插入图片描述

控制台:

在这里插入图片描述

相关内容

热门资讯

英国央行Catherine M... 英国央行Catherine Mann:必须考虑量化紧缩(QT)和一系列利率政策的影响。
原创 香... 在新加坡香格里拉酒店举行的亚太安全论坛上,美国国防部长赫格塞思(Lloyd Austin)于5月31...
美方掐断C919发动机技术,中... 在国际舞台上,当两大经济体相遇,总会引发一场关于技术、资本和市场的角力。最近,中美之间的博弈又一次走...
6800万镑!埃泽“豪言”震惊... 足坛风云变幻,总有那么些球员,他们的名字与豪门绯闻紧密相连,每一次表态都能在转会市场上掀起波澜。这不...
北京警察连续输错5次密码:这就... 几天前,北京丰台的民警上门拦截电信网络诈骗时,发生了紧张的一幕。被骗事主开门时还在与骗子共享屏幕,刚...
美媒公布最新民调:全球对中国好... 【环球网报道 记者 赵建东】美国Axios新闻网2日援引晨间咨询公司(Morning Consult...
韩国新总统最快4日上任,学者:... 韩国总统大选3日即将迎来正式投票。根据选前多项“封关”民调结果,共同民主党候选人李在明仍以明显优势领...
23亿镑仍被冻结!英政府声明:... 直播吧06月03日讯 英国财政大臣瑞秋-里维斯与外交大臣戴维-拉米发表联合声明,就阿布出售切尔西的2...
美国总统特朗普关税政策的法律对... 美国总统特朗普关税政策的法律对头们要求法院在特朗普政府上诉期间暂停实施关税。
芯朋微将于6月18日召开股东大... 金融界6月2日消息,芯朋微发布公告,将于2025年6月18日召开第1次临时股东大会,网络投票同日进行...