您的位置:首页 > 编程语言 > Java开发

SpringMVC 异常统一处理接口 HandlerExceptionResolver

2017-06-01 00:00 441 查看

1.源码接口

/**
* 源码接口定义
*/
public interface HandlerExceptionResolver {

ModelAndView resolveException(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);

}


2.源码接口实现

@Component
public class ExceptionHandler implements HandlerExceptionResolver {

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

// 判断是否AJAX请求
if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
try {
response.setContentType("application/json;charset=UTF-8");
PrintWriter writer = response.getWriter();
Map<String, Object> map = new HashMap<String, Object>();
map.put("success", false);
if (ex instanceof MessageException) {// 安全起见,业务异常前端可见,否则统一归为系统异常
map.put("errorMsg", ex.getMessage());
} else {
map.put("errorMsg", "系统异常!");
}
Gson gson = new Gson();
writer.write(gson.toJson(map));
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}

Map<String, Object> model = new HashMap<>();
return new ModelAndView("/error", model);
}
}

ExceptionHandler 实现 HandlerExceptionResolver接口,需要添加 @Component 注解,或者增加配置文件 <bean class="com.xxg.ExceptionHandler " /> 。

配置完成,后台Controller中所有的业务异常都会由ExceptionHandler来处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: