一,異常種類
1,數據庫異常
2,系統異常,比如一些低級異常,如:空指針異常,內存溢出異常,數據庫連接異常,這些都不用顯示給用戶看
3,應用異常,即自定義異常
二,異常處理原則
1,避免出現大的try塊
2,細化異常的類型,不要不管什么類型的異常都寫成Excetpion。
3,不要把自己能處理的異常拋給別人,不要忽略捕獲的異常,捕獲到后要么處理,要么轉譯,要么重新拋出新類型的異常
4、如果對catch塊盡量保持一個塊捕獲一類異常,在catch語句中盡可能指定具體的異常類型,必要時使用多個catch。
三,處理步驟
- 新建一個類繼承Exception,新建一個屬性用於保存異常信息如下:
package com.zuxia.exception; public class Exceptions extends Exception{ public String ex; public String getEx() { return ex; } public void setEx(String ex) { this.ex = ex; } public Exceptions(String ex){ super(); this.ex=ex; } public Exceptions(){ super(); } }
2.新建一個類實現HandlerExceptionResolver接口,用於自定義異常信息如下:
package com.zuxia.exception; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; public class ExceptionResolver implements HandlerExceptionResolver{ @Override public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) { String ex=null; if(arg3 instanceof Exceptions){ ex=((Exceptions)arg3).getEx(); }else{ ex="未知錯誤"; } ModelAndView mv=new ModelAndView(); mv.addObject("erro", ex); mv.setViewName("err.jsp"); return mv; }
springmvc中配置自定義異常類,如下:
<!-- 異常解析器 -->
<bean class="com.zuxia.exception.ExceptionResolver"></bean>