springMVC異常處理
阿新 • • 發佈:2020-07-14
注:本篇的異常主要指的是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 { }
這樣就配置好了。