当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

struts处理自定义异常

发表于: 2012-03-08   作者:g21121   来源:转载   浏览:
摘要: 很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。 非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。 此处我们用的是非运行时异常,首先定义一个异常LoginException: /** * 类描述:登录相

很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。

非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。

此处我们用的是非运行时异常,首先定义一个异常LoginException:

/**
 * 类描述:登录相关异常
 * 
 * @author ming.li <a href="http://g21121.iteye.com">iteye blog</a>
 * @time 2011-4-27 下午01:08:11
 */
public class LoginException extends Exception {

	/** 版本号 */
	private static final long serialVersionUID = 5843727837651089745L;
	/** 错误码 */
	private String messageKey;
	/** 参数 */
	private Object[] params;

	/**
	 * 默认构造函数
	 */
	public LoginException() {
		super();
	}

	/**
	 * 登录相关异常,页面直接显示错误信息<br/>
	 * 
	 * @param messageKey
	 *            错误码
	 * @param params
	 *            参数
	 */
	public LoginException(String messageKey, Object... params) {
		this.messageKey = messageKey;
		this.params = params;
	}

	/**
	 * @return the messageKey
	 */
	public String getMessageKey() {
		return messageKey;
	}

	/**
	 * @return the params
	 */
	public Object[] getParams() {
		return params;
	}

}

这是个登录异常,用来表示登录情况下发生的各种错误。这个异常只有基本内容,可以根据你的情况自行添加。

 

在发生登录错误时调用代码:

public String login() throws LoginException {
    throw new LoginException("9999");// 用户名或密码错误
}

其中的9999是错误码,这个可以自己定义,用来在国际化时显示不同信息。

此时抛出了一个登录异常的信息,我们就需要在跳转是捕获并显示在页面中。

首先在struts的action配置中捕获此异常:

<package name="login-default" namespace="/" extends="struts-default">

<!-- 登录 -->
<action name="login" class="loginAction" method="login">
	<exception-mapping result="login" exception="com.xxx.exception.LoginException"/>
	<result name="success">index.jsp</result>
	<result name="login">login.jsp</result>
</action>
</package>

 此时我们可以看到,当抛出LoginException时struts会捕获并跳转到login这个result上,进而跳转到login.jsp。

在login.jsp中我们就需要去显示异常信息:

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

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

struts处理自定义异常

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Struts提供了一个更简单的方式来处理未捕获的异常,并将用户重定向到一个专门的错误页面。您可以轻
自定义异常 碰到异常时, 如果只是logger.error一下, 没有处理的话,错误很难定位(前台页面中会出现
当Web容器收到客户端的请求时,便会根据Web。xml文件中的相关配置信息找到相应的处理 servlet。一般
当Web容器收到客户端的请求时,便会根据Web。xml文件中的相关配置信息找到相应的处理 servlet。一般
用过安卓手机的用户以及安卓开发者们会时长碰到程序异常退出的情况,普通用户遇到这种情况,肯定非
本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异常 index.jsp <%@ page pageEn
本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异常 index.jsp <%@ page pageEn
本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异常 index.jsp <%@ page pageEn
本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异常 index.jsp <%@ page pageEn
本示例是以一个计算器的例子来写的,为了方便,这里处理的是算术异常 index.jsp <%@ page pageEn
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号