WEB 項目中的全局異常處理


  在web 項目中,遇到異常一般有兩種處理方式:try.....catch....throw

  通常情況下我們用try.....catch.... 對異常進行捕捉處理,可是在實際項目中隨時的進行異常捕捉,會造成代碼重復和繁雜,我們希望代碼中只有業務相關的操作,所有的異常我們單獨設立一個類來處理它。

  首先,我們在可能發生異常的方法,全部throw出來,即dao拋給serviceservicecontrollercontroller拋給前端控制器;

  然后由前端控制器調用 全局異常處理器  對異常進行統一處理

  

  全局異常處理器處理思路:

    首先解析出異常類型;

      如果該 異常類型是系統 自定義的異常,直接取出異常信息,在錯誤頁面展示

      如果該 異常類型不是系統 自定義的異常,構造一個自定義的異常類型(信息為“未知錯誤”)(應為一般業務異常我們並不希望被用戶知道,防止代碼泄露,造成不安全)

      自定義異常一般是業務異常,這個異常的信息應該告知客戶,系統異常一般是代碼異常,一般寫日志

  SpringMVC提供一個HandlerExceptionResolver接口,全局異常處理器實現此接口

   定義一個全局異常處理類:將客戶異常的消息放入ModelAndView的model中,並在error頁面中顯示出來

public class ExceptionResolver implements HandlerExceptionResolver{
  //該方法的的參數會自動獲取 請求(request),響應(response),異常(exception),handler(異常參數的處理器 Controller)
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) {
        ModelAndView mav = new ModelAndView();
        if(ex instanceof CustomException){
            //用戶異常
            mav.addObject("message", ex.getMessage());
            mav.setViewName("error");
        }else{
       //系統異常 mav.addObject(
"message", "系統出現異常,請稍后訪問"); mav.setViewName("error"); } return mav; } }

    在SpringMVC中生成該對象:

<!--配置異常對象處理器  該類要實現HandlerExceptionResolver接口  -->
          <bean class="com.lh.excrption.ExceptionResolver"></bean>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM