Spring全局異常處理器


springmvc.xml中的配置全局異常處理器的bean:

<bean class="com.taotao.exception.CustomExceptionResolver"></bean>

java代碼:

package com.taotao.exception;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;


/** 
 * @ClassName: CustomExceptionResolver 
 * @Description: 全局異常處理器
 * @author 會飛的貓
 * @date Jan 1, 2018 11:45:31 AM 
 */
/*
 * 思路:系統遇到異常,在程序中手動拋出,dao拋給service,service拋給controller,
 * controller拋給前端控制器,前端控制器調用全局異常處理器
 * 全局異常處理器解析出異常類型,如果是系統自定義的異常,直接取出異常信息,在錯誤頁面顯示
 * 否則構造一個自定義的異常類型,輸出信息“未知錯誤”
 * 與業務功能相關的異常拋出在service層,否則拋出在controller
 */
public class CustomExceptionResolver implements HandlerExceptionResolver{
	
	//ex為系統拋出的異常,ex為被spring框架截獲的異常(全局異常處理器,應該是系統拋出的所有異常一律被強轉為自定義的CustomException異常,然后輸出自定義的異常信息)
	//handler為處理器適配器執行的handler對象(此對象只有一個method)
	@Override
	public ModelAndView resolveException(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex) {
		
		CustomException customException = null;
		if (ex instanceof CustomException) {    //判斷系統拋出的異常是否為自定義異常
			customException = (CustomException) ex;
		}else{
			customException = new CustomException("未知錯誤");
		}
		//獲取此message
		String message = customException.getMessage();
		ModelAndView modelAndView = new ModelAndView();
		//將以上獲取的message保存到modelAndView中,在JSP中使用${}訪問之
		modelAndView.addObject("message", message);
		modelAndView.setViewName("error");
		return modelAndView;
	}
}





注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: