Spring MVC 统一捕获全局接口异常并返回Json

对基于Spring MVC框架开发的Web项目,我们可以通过实现接口 org.springframework.web.servlet.HandlerExceptionResolver,来定制自己工程的全局异常处理类,做到异常统一捕获处理,避免服务器端敏感信息直接暴露到客户端,根据情况构造统一的Json结构返回前端,以错误提示的方式展示给用户。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Order(-1)
public class MyProjectExceptionHandler implements HandlerExceptionResolver {


@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

ModelAndView mv = new ModelAndView();


response.setStatus(HttpStatus.OK.value()); //设置状态码
response.setContentType(MediaType.APPLICATION_JSON_VALUE); //设置ContentType
response.setCharacterEncoding("UTF-8"); //避免乱码
response.setHeader("Cache-Control", "no-cache, must-revalidate");

try {


response.getWriter().write("你需要响应给前端的信息");

} catch (IOException e) {
//todo error log
}

//todo log

return mv;

}

}