springmvc自定义异常处理器(2)

思路:

        解析出异常类型
        如果该异常类型是系统自定义的异常,直接取出异常信息,在错误页面展示
        如果该异常类型不是系统自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)


步骤一

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}


猜你喜欢

转载自blog.csdn.net/yaoyaowudi123/article/details/80094182