Struts处理自定义异常

Linux大全评论135 views阅读模式

很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自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>  

这样异常信息就会被显示了。

 

 

 

 

企鹅博客
  • 本文由 发表于 2020年9月28日 12:23:51
  • 转载请务必保留本文链接:https://www.qieseo.com/174388.html

发表评论