代码如下:
@ControllerAdvice public class GlobalExceptionHandler { private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); /** * 处理Controller层通用 BusinessException 异常 * 可以防止Controller未处理异常的程序中止,进行全局捕获 * * @ExceptionHandler(value = Exception.class) 可以定义多个。 */ @ResponseBody @ExceptionHandler(value = Exception.class) public BaseResponse<?> exceptionHandler(Exception e) { String errorInfo = e + IOUtils.LINE_SEPARATOR + String.join(IOUtils.LINE_SEPARATOR, Optional.ofNullable(e.getStackTrace()).map(els -> Arrays.stream(els).map(el -> new StringBuilder().append(" 定位:").append(el.getClassName()).append(".").append(el.getMethodName()).append("(").append(el.getFileName()).append(":").append(el.getLineNumber()).append(")").toString()).collect(Collectors.toList())).orElse(Collections.emptyList())); logger.error("====异常信息:{}", errorInfo); return BaseResponse.errorParameter(errorInfo); } }
执行效果:
控制台打印效果:
前端调用返回效果:
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!