思路:
解析出异常类型 如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示 如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)
步骤一
public class CustomExceptionResolver implements HandlerExceptionResolver { public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { ex.printStackTrace(); GyException gyException = null; //如果抛出的是系统自定义的异常则直接转换 if(ex instanceof GyException) { gyException = (GyException) ex; } else { //如果抛出的不是系统自定义的异常则重新构造一个未知错误异常 //这里我就也有CustomException省事了,实际中应该要再定义一个新的异常 gyException = new GyException("系统未知错误"); } // 向前台返回错误信息 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", gyException.getMessage()); modelAndView.setViewName("custom_error"); return modelAndView; } }
步骤二:springmvc的配置文件中注册全局异常处理器
<bean class="com.test.validator.controller.exception.CustomExceptionResolver"></bean>
步骤三抛出异常
public String ecxeption(HttpServletRequest httpServletRequest , HttpServletResponse httpServletResponse ,User user) throws Exception { if(user.getUserName()==null) { System.out.println("用户名不能为空"); throw new GyException("用户名不能为空"); } return "custom_error"; }
步骤4页面取出错误数据
${message}