/** * 文件名 : BaseController.java * 版权 : XX科技有限公司。 * 描述 : <描述> * 修改时间:2016年9月7日 * 修改内容:<修改内容> */ package com.base; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.platform.utils.Configs; /** * <一句话功能简述> * <功能详细描述> * @author chen * @version [版本号,2016年9月7日] * @see [相关类/方法] * @since [产品/模块版本] */ @ControllerAdvice public class BaseController { /** log4j */ public final static Logger log = Logger.getLogger(BaseController.class); /** * <一句话功能简述> 基于@ExceptionHandler异常处理----全局异常处理 * <功能详细描述> * @param request * @param ex 异常 * @return * @see [类、类#方法、类#成员] */ @ExceptionHandler @ResponseBody public Object exp(HttpServletRequest request, HttpServletResponse response,Exception ex) { log.error("URI"+request.getRequestURI()); log.error("BaseController --exp " + ex); new CustomException("base_code_", ex); // 根据不同错误转向不同页面 ModelMap modelMap = new ModelMap (); Map errmsg = new HashMap<>(); if(ex instanceof CustomException) { //返回异常信息 CustomException cuse = (CustomException) ex; errmsg.put("code", cuse.getCode()); errmsg.put("msg", cuse.getMsg()); errmsg.put("err", "网络问题请稍后再试!"); // request.setAttribute("msg", cuse.getMsg()); // request.setAttribute("err", "网络问题请稍后再试!"); modelMap.addAllAttributes(errmsg); log.error(cuse.getCode()); response.setStatus(500); return modelMap; } else { //其他错误则 调到指定页面 log.error(Configs.GLOBAL_EXP_NOT_CUSTOM, ex); response.setStatus(500); errmsg.put("err", "系统问题请稍后再试!"); modelMap.addAllAttributes(errmsg); return modelMap; } } }