springmvc處理異常

2022-03-08 02:28:21 字數 2793 閱讀 2300

在之前使用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來驗證這個視**析器有沒有起作用:

@controller

public

class

excetpionviewcontroller

else

if (empno == 4)

return "index";

}}

執行測試,輸入不同的值,看發生異常時跳轉的錯誤頁面是否匹配;

該註解只能控制當前控制器匯中的異常,因此為了方便我們將其放在basecontroller中,其他的controller都繼承該basecontroller,下面進行測試,將上一步的視**析器注釋掉:

public

class

basecontroller )

public

string exception(exception ex, model model)

else

}}

@controller

public

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資料:可以定義乙個實體,封裝異常資訊:

import

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