在之前使用springmvc,異常的處理都是在controller層中進行try--catch,在springmvc種如何設定報錯時跳轉的頁面呢?統一進行異常處理
在mvc配置檔案種新增下面的配置:
<
bean
class
>
<
property
name
="defaulterrorview"
value
="error"
/>
<
property
name
="exceptionattribute"
value
="ex"
/>
<
property
name
>
<
props
>
<
prop
key="nullpointerexception"
>
error
prop
>
<
prop
key="classnotfoundexception"
>
unauthorized
prop
>
props
>
property
>
bean
>
然後我們建乙個簡單的controller來驗證這個視**析器有沒有起作用:
@controllerpublic
class
excetpionviewcontroller
else
if (empno == 4)
return "index";
}}
執行測試,輸入不同的值,看發生異常時跳轉的錯誤頁面是否匹配;
該註解只能控制當前控制器匯中的異常,因此為了方便我們將其放在basecontroller中,其他的controller都繼承該basecontroller,下面進行測試,將上一步的視**析器注釋掉:
publicclass
basecontroller )
public
string exception(exception ex, model model)
else
}}
@controllerpublic
class excetpionviewcontroller extends
basecontroller
else
if (empno == 4)
return "index";
}}
瀏覽器傳送請求,測試是否跳轉響應位址。
與上面的方式差不多,不過使用這種方式避免了繼承,controller不需要再繼承basecontrolelr,發生異常時,就會呼叫該控制器中的方法
/*** @controlleradvice:
* 相當於是aop,面向切面,給每乙個controller都橫插了該控制器 */
@controlleradvice
public
class
basecontroller )
public
string exception(exception ex, model model)
else
}}
非同步方式返回異常:
給方法新增@responsebody註解,返回json資料:可以定義乙個實體,封裝異常資訊:
importlombok.data;
/*** data註解,可以自動生成set和get方法 */
@data
public
class
result
/*** @controlleradvice:
* 相當於是aop,面向切面,給每乙個controller都橫插了該控制器 */
@controlleradvice
public
class
basecontroller )
@responsebody
public
result exception(exception ex)
else
if (ex instanceof
classnotfoundexception)
return
result;
}}
4.實現handlerexceptionresolver介面
spring mvc 異常處理
一般來說,程式每出現乙個異常就需要throws 或者try catch語句塊進行處理,這樣處理異常的方法比較少的情況,還體現不出麻煩,如果需要處理異常的方法比較多的情況下,有乙個統一處理異常方法就顯得尤其重要,即所有丟擲的異常都在乙個方法進行處理,這樣可以集中 簡便,如果需要修改異常處理的方式也比較...
springmvc異常處理
1.異常處理思路 系統中異常包括兩類 預期異常和執行時異常runtimeexception,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範 開發 測試的手段減少執行時異常的發生。系統的dao service controller出現異常都通過throws exception向上丟擲,最後由spr...
SpringMVC異常處理
一 springmvc異常處理流程 預期異常,執行時異常 runtimeexception 前者通過捕獲異常從而獲取異常資訊,後者主要通過規範 開發 測試通過手段減少執行異常的發生。系統的dao service controller 出現都通過throw cetion向上跑出,最後由springmv...