關於 Struts 1.1 Exception Handler 的應用補充 (轉)

amyz發表於2007-11-12
關於 Struts 1.1 Exception Handler 的應用補充 (轉)[@more@]

  通常,我們在應用1.0進行開發的過程中,對於異常的處理,主要是採用手動處理的方式。

  如透過 try/catch 等捕獲異常,然後透過 FormBean.returnString ()或De.println ("");的方式 ,把這些錯誤資訊反饋給或開發人員。

  在 Struts 1.1 中,引入了新的異常處理機制,讓我們可以透過(主要是struts-config.)來定製異常處理,就象定義formbean一樣。

  下面,我們就來看看如何具體地運用這個新特性。

 

一、定製異常(在 struts-config.xml檔案中定義)

 

  定製異常也有兩種方法,姑且把它分為:“全域性異常(Global Exceptions)”和“區域性異常 (Local Exception)”。

  “全域性異常”定義方法如下:

 

pe="request"

Handler="org..struts.action.ExceptionHandler"microsoft-com::office" />

path="error."/> 

上述程式碼在struts-config.xml中定義了一個全域性異常,它的作用是丟擲InvalidiUserNameException(在這裡的意思是當在新增使用者的時候,發現該使用者已經存在)異常的時候返回到error.jsp中,並且攜帶自定的比較規範的異常資訊struts.test.InvalidUserName,struts.test.InvalidUserName可以在應用的資源配置檔案中找到,如:

struts.test.InvalidUserName =重複註冊使用者!

區域性異常,定義方法如下:

 

    type="struts.test.UserLogonAction"

    name="userLogonForm">

   

type="struts.test.InvalidiUserNameException"

Handler="org.apache.struts.action.ExceptionHandler"

path="/error.jsp"/>

   

 

關於異常在 Struts 1.1 中 Struts-config.xml 的定義就這麼簡單。

二、實現我們的異常類(struts.test.InvalidiUserNameException)

 

為了實現 struts.test.InvalidiUserNameException 這個異常,我們必須自己編寫一個繼承於 Exception 的異常:InvalidiUserNameException。

File name : InvalidiUserNameException.

package struts.test;

 public class InvalidiUserNameException extends Exception

{

  public InvalidiUserNameException ()

  {

    super();

    }

}

 

 三、一個丟擲異常的Action

我們假設下面這個異常將會丟擲 struts.test.InvalidiUserNameException :

public class UserLogonAction extends BaseAction {

  public ActionForward execute(ActionMapping mapping,

        ActionFoform,

        HttpRequest request,

        HttpServletResponse response)throws Exception {

  throw new struts.test.InvalidiUserNameException ();

  }

}

 

四、顯示我們的異常資訊

為了顯示我們的友好錯誤提示資訊,我們可以編寫一個error.jsp 檔案,內容如下:

error.jsp 

-INF/struts-bean.tld" prefix="bean" %>



 




 

Struts 1.1 Exception Handler Demo

 


 


 


 

出現一個意外


  請將下面的提示資訊反饋給你的員:


     <!--將在這裡顯示”重複註冊使用者!”--&gt


 


 五、出現我們的異常

好了,我們可以看到我們的異常了。當到上面的 Action 的時候,程式將會丟擲InvalidiUserNameException ,而 struts1.1的 Exception Handler 將會捕捉這個異常,並在 struts-config.xml尋找匹配的異常定義資訊,最終轉到error.jsp並且顯示了我們定義的錯誤資訊:

 

重複註冊使用者!

 

 以上的程式碼只是從整體上介紹瞭如何使用 Struts 1.1 的異常處理機制,在我們具體的實現中,我們可以在 DAO/Oper 層丟擲異常,並不需要在 Action 層丟擲。

 所以,我們定製的異常在程式中並不需要用try/catch來捕獲,一旦出現了我們已經定義的異常那麼就會轉到相應的頁面,並且顯示相應定製的資訊。

我們上面是使用 Struts 預設的異常處理 Handler org.apache.struts.action. ExceptionHandler  來處理的。

我們也可以定義自己的處理方式,只要繼承它並實現其中的execute方法,這個方法在 ExceptionHandler 的定義如下:

  public ActionForward execute(Exception ex,

  ExceptionConfig ae,

  ActionMapping mapping,

  ActionForm fonstance,

  HttpServletRequest request,

  HttpServletResponse response)

  throws ServletException

補充說明:

FormBean.returnString ():是我們自己定義的一個用於顯示在使用者頁面的友好提示資訊

 Debug 是我們自己定義的一個顯示控制檯錯誤資訊的類

DAO/Oper :具體實現操作或其他的類

 

感謝:

">

-8-8


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981973/,如需轉載,請註明出處,否則將追究法律責任。

相關文章