異常處理
1.異常處理思路
系統中異常包括兩類:預期異常和運作時異常runtimeexception,前者通過捕獲異常進而擷取異常資訊,後者主要通過規範代碼開發、測試通過手段減少運作時異常的發生。
系統的dao、service、controller出現都通過throws exception向上抛出,最後由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),則會抛出我們自定義的異常資訊:
同樣在service中也可以抛出異常
如果與業務功能相關的異常,建議在service中抛出異常。
與業務功能沒有關系的異常,建議在controller中抛出。
上邊的功能,建議在service中抛出異常。
轉載請注明出處:http://blog.csdn.net/acmman/article/details/47604099