Struts2學習筆記(6)-異常處理

一、異常

  異常指的是在程序運行過程中發生的異常事件,通常是由硬件問題或者程序設計問題所導致的。在Java等面向對象的編程語言中異常屬於對象。

二、Struts2異常處理:exception-mapping元素

Struts2提供了一種機制能把你在動作類裏未能捕獲的異常一網打盡:在配置文件裏使用exception-mapping元素。
exception-mapping元素,有以下屬性:
   exception屬性:用來指定需要捕獲的異常的類型;
   result屬性:用來指定一個結果名,該結果將在捕獲到一個異常時被執行,它既可以來自當前動作的聲明,也可以來自global-results聲明。
 可以在動作聲明裏嵌套使用一個或多個exception-mapping元素。

示例如下:

    <action name="User_save" class="">
      <exception-mapping exception="java.lang.Exception" result="error" />
      <result name="error">/error.jsp</result>
      <result>/success.jsp</result>
    </action>

上述代碼裏的exception-mapping元素可以捕獲User_save動作所拋出的各種異常,在捕獲到一個異常時將執行error結果。

除此之外,還可以通過使用global-exception-mappings元素爲應用程序提供一個全局性的異常捕獲映射。需注意的是,在global-exception-mappings元素下聲明的任何exception-mapping元素只能引用在global-results元素下聲明的某個result元素。

示例如下:

 <global-results>
      <result name="error">/error.jsp</result>
      <result name="sqlError">/SQLError.jsp</result>
    </global-results>
    <global-exception-mappings>
      <exception-mapping exception="java.sql.SQLException" result="sqlError" />
      <exception-mapping exception="java.lang.Exception" result="error" ></exception-mapping>
    </global-exception-mappings>
在幕後,所有被捕獲的異常都將由Exception攔截器負責處理。這個攔截器是defaultStack默認棧的一份子,每當某個exception-mapping元素捕獲到一個異常,這個攔截器就會往Value Stack棧中添加兩個對象,分別是:
 exception:表示被捕獲異常的Exception對象。
 exceptionStack:包含着被捕獲異常的棧線索。
 這樣既可以在視圖裏顯示異常消息,也可以在視圖裏顯示它的棧線索。

顯示方式:用property標籤

  <s:property value="exception.message" />
  <s:property value="exceptionStack" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章