天天看點

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}
           

繼續閱讀