2013-02-19 65 views
0

對於我的Java Web應用程序處理錯誤,我可以使用:web.xml錯誤500和struts全局異常有什麼區別?

  • 在web.xml文件中定義<error-page>像這樣:

    <error-page> 
        <error-code>500</error-code> 
        <location>/file_not_found.html</location> 
    </error-page> 
    
  • 或者在struts-config.xml定義<global-exceptions>像這樣:

    <global-exceptions> 
        <exception 
         key="error.global.mesage" 
         type="java.lang.Exception" 
         path="/pages/error.jsp" /> 
    </global-exceptions> 
    

什麼是迪fference?

在哪些情況下應該使用這些選項的?如果兩者都在同一個應用程序中定義

會發生什麼? (定義兩者都有意義嗎?)

回答

1

讓我們來看一個簡單的servlet/jsps直接提供一些簡單內容(靜態文件,統計信息等)的示例項目,以及一個更復雜的基於Struts的應用程序,它爲業務門戶。

簡單的servlet/JSP中拋出未捕獲的異常,如你在web.xml中的‘錯誤頁的’指令定義將顯示異常信息,而不是支柱的。

在基於Struts的業務門戶中引發的未捕獲異常,異常信息將按照您在「全局異常」指令中定義的那樣顯示。

更多的間隙,在極少數情況下,但不是不可能的,在Struts框架中的錯誤本身拋出一個異常,它只能通過應用服務器/ servlet容器抓住並利用的web.xml的「無差錯顯示的頁面「指令。

1

首先是一個容器級別的錯誤頁專門爲500秒(內部服務器錯誤)。

第二個是一個框架級錯誤頁面專爲例外攔截的行動調用期間拋出的所有Exception子類。

在異常攔截器之前/之後可能會出現異常:這意味着您可能應聲明,假設它符合您的要求。

我更喜歡處理儘可能靠近應用盡可能應用程序特定的例外:這意味着使用Struts 2的聲明異常處理機制,是我的應用程序自身內部的任何選擇。但是,可能發生的情況是,框架本身甚至容器都可能在框架完成大部分處理之前(或之後)拋出異常。