使用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注解

posted @   程长新  阅读(290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示