springmvc異常處理

2021-07-31 13:43:53 字數 1877 閱讀 4882

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...