歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Struts處理自定義異常

很多時候我們會用到自定義異常來表示特定的錯誤情況,自定義異常比較簡單,只要分清是運行時異常還是非運行時異常即可,運行時異常不需要捕獲,繼承自RuntimeException,是由容器自己拋出,例如空指針異常。

非運行時異常繼承自Exception,在拋出後需要捕獲,例如文件未找到異常。

此處我們用的是非運行時異常,首先定義一個異常LoginException:

  1. /**  
  2.  * 類描述:登錄相關異常  
  3.  *   
  4.  * @author ming.li <a href="http://www.linuxidc.com">www.linuxidc.com</a>  
  5.  * @time 2011-4-27 下午01:08:11  
  6.  */  
  7. public class LoginException extends Exception {   
  8.   
  9.     /** 版本號 */  
  10.     private static final long serialVersionUID = 5843727837651089745L;   
  11.     /** 錯誤碼 */  
  12.     private String messageKey;   
  13.     /** 參數 */  
  14.     private Object[] params;   
  15.   
  16.     /**  
  17.      * 默認構造函數  
  18.      */  
  19.     public LoginException() {   
  20.         super();   
  21.     }   
  22.   
  23.     /**  
  24.      * 登錄相關異常,頁面直接顯示錯誤信息<br/>  
  25.      *   
  26.      * @param messageKey  
  27.      *            錯誤碼  
  28.      * @param params  
  29.      *            參數  
  30.      */  
  31.     public LoginException(String messageKey, Object... params) {   
  32.         this.messageKey = messageKey;   
  33.         this.params = params;   
  34.     }   
  35.   
  36.     /**  
  37.      * @return the messageKey  
  38.      */  
  39.     public String getMessageKey() {   
  40.         return messageKey;   
  41.     }   
  42.   
  43.     /**  
  44.      * @return the params  
  45.      */  
  46.     public Object[] getParams() {   
  47.         return params;   
  48.     }   
  49.   
  50. }  

這是個登錄異常,用來表示登錄情況下發生的各種錯誤。這個異常只有基本內容,可以根據你的情況自行添加。

在發生登錄錯誤時調用代碼:

  1. public String login() throws LoginException {   
  2.     throw new LoginException("9999");// 用戶名或密碼錯誤   
  3. }  

其中的9999是錯誤碼,這個可以自己定義,用來在國際化時顯示不同信息。

此時拋出了一個登錄異常的信息,我們就需要在跳轉是捕獲並顯示在頁面中。

首先在struts的action配置中捕獲此異常:

  1. <package name="login-default" namespace="/" extends="struts-default">   
  2.   
  3. <!-- 登錄 -->   
  4. <action name="login" class="loginAction" method="login">   
  5.     <exception-mapping result="login" exception="com.xxx.exception.LoginException"/>   
  6.     <result name="success">index.jsp</result>   
  7.     <result name="login">login.jsp</result>   
  8. </action>   
  9. </package>  

此時我們可以看到,當拋出LoginException時struts會捕獲並跳轉到login這個result上,進而跳轉到login.jsp。

在login.jsp中我們就需要去顯示異常信息:

  1. <%@taglib prefix="s" uri="/struts-tags"%>   
  2. <%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>   
  3. <!-- 異常信息顯示 -->   
  4. <c:if test="${!empty exception}"><s:property value="%{getText(exception.messageKey)}"/></c:if>  

這樣異常信息就會被顯示了。

 

 

 

 

 

 

Copyright © Linux教程網 All Rights Reserved