.Net轉Java自學之路—SpringMVC框架篇六(異常處理)

系統中異常包含兩種:預期異常和運行時異常RuntimeException,前者經過捕獲異常從而獲取異常信息,後者主要經過規範化代碼開發、測試手段減小運行時異常的發生。前端

系統的dao、service、controller出現異常都經過throws Exception向上拋出,最後由SpringMVC前端控制器交由異常異常處理器ExceptionResoler進行異常處理。spring

SpringMVC提供全局異常處理器(一個系統只有一個異常處理器)進行統一異常處理。mvc

自定義異常類:測試

  對不一樣的異常類型定義異常類。集成Exception。自定義異常類,針對預期的異常,須要在程序中拋出此類的異常。this

public class SelfException extends Exception{
    public String message;
    public SelfException(String message){
        super(message);
        this.message=message;
    }
    
    public String getMessage(){
        return message;
    }
    
    public void setMessage(String message){
        this.message=message;
    }
}

全局異常處理器:編碼

  全局異常處理器處理思路:解析異常類型。
    若該異常類是系統自定義的異常,直接取出異常信息,在錯誤頁面展現。
    若該異常類型不是系統自定義的異常,則構造一個自定義的異常類型(信息爲「未知錯誤」)spa

  編碼:SpringMVC提供了一個HandlerExceptionResolver接口。code

public class SelfExceptionResolver implements HandlerExceptionResolver{
    public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex){
        //handler就是處理器適配器要執行handler對象(只有method)
        
        String message=null;
        if(ex instanceof SelfException){
            message=((SelfException)ex).getMessage();
        }else{
            message="未知錯誤";
        }
        
        //
        
        SelfException self=null;
        if(ex instanceof SelfException){
            self=(SelfException)ex;
        }else{
            self=new SelfException("未知錯誤");
        }
        String message=self.getMessage();
        
        ModelAndView mav=new ModelAndView();
        //將錯誤信息傳到頁面
        mav.addObject("msg",message);
        //執行錯誤頁面
        mav.setViewName("error");
        return mav;
    }
}

  在springmvc.xml中配置全局異常處理器。xml

<!-- 全局異常處理器
    只要實現HandlerExceptionResolver接口就是全局異常處理器 -->
<bean class="cn.ccir.test.exception.SelfExceptionResolver"></bean>
相關文章
相關標籤/搜索