1.異常處理思路
系統中異常包括兩類:預期異常和執行時異常runtimeexception,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範**開發、測試的手段減少執行時異常的發生。
系統的dao、service、controller出現異常都通過throws exception向上丟擲,最後由springmvc前端控制器交由異常處理器進行異常處理,如下圖:
springmvc提供全域性異常處理器(乙個系統只有乙個異常處理器)進行統一異常處理。
2.自定義異常類
對不同的異常型別定義異常類,繼承exception。
3.全域性異常處理器
系統遇到異常,在程式中,dao拋給service、service拋給controller、controller拋給前端控制器,前端控制器呼叫全域性異常處理器。
全域性異常處理器處理思路:
解析出異常型別
如果該異常型別是系統自定義的異常,直接取出異常資訊,直接取出異常資訊,在錯誤頁面展示
如果該異常型別不是系統自定義的異常,構造乙個自定義的異常型別(這裡資訊自定義為「」未知錯誤「」)
springmvc提供了乙個handlerexceptionresolver介面,全域性異常處理器**如下:
public class customexceptionresolver implements handlerexceptionresolverelse
//上邊**變為
customexception customexception =null;
if(exinstanceofcustomexception)else
//錯誤資訊
string message = customexception.getmessage();
modelandview modelandview =newmodelandview();
//將錯誤資訊傳到頁面
modelandview.addobject("message", message);
//指向錯誤頁面
modelandview.setviewname("error");
returnmodelandview;
}4.錯誤頁面
錯誤提示
$5.在springmvc.xml配置全域性異常處理器
用來定義類的全限定名(包名+類名))">
6.異常測試
在controller、
service
、dao
中任意一處需要手動丟擲異常。
如果是程式中手動丟擲的異常,在錯誤頁面中顯示自定義的異常資訊,如果不是手動丟擲異常說明是乙個執行時異常,在錯誤頁面只顯示「未知錯誤」。
在商品修改的controller方法中丟擲異常:
在service介面中丟擲異常:
如果與業務功能相關的異常,建議在service中丟擲異常。
與業務功能沒有關係的異常,建議在controller中丟擲。
上邊的功能,建議在service中丟擲異常。
spring mvc 異常處理
一般來說,程式每出現乙個異常就需要throws 或者try catch語句塊進行處理,這樣處理異常的方法比較少的情況,還體現不出麻煩,如果需要處理異常的方法比較多的情況下,有乙個統一處理異常方法就顯得尤其重要,即所有丟擲的異常都在乙個方法進行處理,這樣可以集中 簡便,如果需要修改異常處理的方式也比較...
SpringMVC異常處理
一 springmvc異常處理流程 預期異常,執行時異常 runtimeexception 前者通過捕獲異常從而獲取異常資訊,後者主要通過規範 開發 測試通過手段減少執行異常的發生。系統的dao service controller 出現都通過throw cetion向上跑出,最後由springmv...
springmvc異常處理
異常的名稱,介面上可以使用這個來輸出異常資訊 指定特殊異常,並為特殊異常指定特定的介面 key xyz.zeling.exception.handle.modules.exception.handle.usernotfoundexception exception handling erroruse...