天天看點

【SpringMVC整合MyBatis】springmvc異常處理-全局異常處理器開發

異常處理

1.異常處理思路

系統中異常包括兩類:預期異常和運作時異常runtimeexception,前者通過捕獲異常進而擷取異常資訊,後者主要通過規範代碼開發、測試通過手段減少運作時異常的發生。

系統的dao、service、controller出現都通過throws exception向上抛出,最後由springmvc前端控制器交由異常處理器進行異常處理,如下圖:

【SpringMVC整合MyBatis】springmvc異常處理-全局異常處理器開發

springmvc提供全局異常處理器(一個系統隻有一個異常處理器)進行統一異常處理。

2.自定義異常類

對不同的異常類型定義異常類,繼承exception。

3.全局異常處理器

思路:

系統遇到異常,在程式中手動抛出,dao抛給service、service給controller、controller抛給前端控制器,前端控制器調用全局異常處理器。

全局異常處理器處理思路:

    解析出異常類型。

    如果該 異常類型是系統 自定義的異常,直接取出異常資訊,在錯誤頁面展示。

    如果該 異常類型不是系統 自定義的異常,構造一個自定義的異常類型(資訊為“未知錯誤”)。

springmvc提供一個handlerexceptionresolver接口

4.錯誤頁面

在web-inf/jsp檔案夾下建立error.jsp頁面,内容為:

5.在springmvc.xml配置全局異常處理器

6.異常測試

在controller、service、dao中任意一處需要手動抛出異常。

如果是程式中手動抛出的異常,在錯誤頁面中顯示自定義的異常資訊,如果不是手動抛出異常說明是一個運作時異常,在錯誤頁面隻顯示“未知錯誤”。

在商品修改的controller方法中抛出異常。

其中上面用到的service方法:

我們讓id指定一個沒有的數(如4444),則會抛出我們自定義的異常資訊:

【SpringMVC整合MyBatis】springmvc異常處理-全局異常處理器開發

同樣在service中也可以抛出異常

如果與業務功能相關的異常,建議在service中抛出異常。

與業務功能沒有關系的異常,建議在controller中抛出。

上邊的功能,建議在service中抛出異常。

轉載請注明出處:http://blog.csdn.net/acmman/article/details/47604099