1. 程式人生 > 實用技巧 >springMVC異常處理

springMVC異常處理

注:本篇的異常主要指的是controller、service和dao層中執行方法丟擲的異常。

一、為什麼要處理異常?

  因為如果我們不處理異常,異常資訊就會直接丟擲給瀏覽器,於是瀏覽器頁面就直接顯示異常資訊,這對使用者來說是很不友好的。我們應該在發生錯誤時返回一個友好的錯誤提示頁面展示給使用者。

二,異常處理思路

  當dao或者其他層丟擲異常時,異常會向上逐層丟擲,最後丟擲到瀏覽器。那麼我們就可以在異常丟擲到前端控制器(DispatcherServlet)的時候,編寫異常處理器對異常進行攔截,經過異常處理器處理異常後,跳轉到一個友好的錯誤提示頁面並返回給瀏覽器

三、實現步驟

1.編寫自定義異常類

public class SysException extends Exception {
    private String message;

    public SysException(String message) {
        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

2.編寫異常處理器類

public class SysExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
        SysException e = null;
        if (ex instanceof SysException){
            e = (SysException) ex;
        }else {
            e = new SysException("系統正在維護");
        }

        ModelAndView mv = new ModelAndView();
        mv.addObject("errorMsg",ex.getMessage());
        mv.setViewName("error");
        return mv;
    }
}

 注意:異常處理器類必須實現HandlerExceptionResolver介面,並實現介面中的方法

3.配置異常處理器(將異常處理器交給spring容器管理)

方式一:用xml配置的方式

在springmvc.xml配置檔案中加如bean標籤,將剛剛編寫的異常處理器類交給spring容器管理。

<bean id="sysExceptionResolver" class="com.xj.exception.SysExceptionResolver"/>

方式二:使用註解

在剛剛編寫的異常處理器類上加上Component註解

例如:

@Component
public class SysExceptionResolver implements HandlerExceptionResolver {

}

這樣就配置好了。