Struts2異常處理方式有兩種;一種爲全局異常映射,另一種即爲局部異常映射。html
在struts.xml文件中配置全局異常,經過<global-exception-mappings>標籤下的<exception-mapping>進行配置;java
<package name="commonStack" extends="struts-default"> <global-results> <!--通resule的name來映射對應的頁面--> <result name="error">/jsp/common/error.jsp</result> <global-results> <global-exception-mappings> <!--經過exception定義捕捉的異常類型,result返回對應的映射頁面--> <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping> </global-exception-mappings> </package>
<global-result>下指定全局的視圖映射,<exception-mapping>中的exception指定捕捉異常類型,也能夠自定義異常;app
局部異常即用於捕獲在具體哪一個<action>中的異常,一樣是經過<exception-mapping>來定義;經過exception來捕獲對應的異常,result返回對應的異常頁面;struts捕獲異常時,先會在對應的<action>下找對應的局部異常,若同時存在該全局異常,會優先使用局部異常。result返回的頁面也能夠使用全局<global-result>下定義的映射頁面。jsp
<package name="exceptionTest" extends="commonStack" namespace="/exceptionTest"> <action name="qry" class="com.shcredit.controller.appkind.QryAction"> <exception-mapping exception="com.shcredit.controller.exception.MyException" result="error"> </exception-mapping> <result name="error">/jsp/common/resubmit.jsp</result> </action> </package>
在處理異常頁面中使用:spa
<s:property value="exception"/> <!--輸出異常對象自己--> <s:property value="exceptionStack"/> <!--輸出異常堆棧信息-->
小技巧:在JSP頁面中能夠使用<s:debug/>進行調試,能夠查看Value Stack和Stack Context對象;debug