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