使用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 @ 2024-07-24 10:49  程长新  阅读(19)  评论(0编辑  收藏  举报