使用ControllerAdvice定义了全局异常处理器但返回不生效
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public AjaxResult exception(Exception exception){
log.error("exception: {}", exception.getMessage());
return AjaxResult.error(exception.getMessage());
}
}
使用@ControllerAdvice定义了一个全局异常处理器,接口抛出异常后异常处理方法确实捕捉到了这个异常并通过log.error打印了异常信息,但是页面返回却不是异常处理器返回的内容,返回内容如下:
原因是因为我的接口的RESTFUL风格的,也就是使用RestController定义的接口,SpringMVC会自动把返回值封装成JSON格式,但是使用ControllerAdvice定义异常处理器,SpringMVC不会将返回封装成JSON,而是尝试渲染一个视图,如果没有合适的视图配置就会导致默认错误页。
解决方案:把ControllerAdvice改成RestControllerAdvice即可,或再加上ResponseBody注解
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库