详解Java异常处理——自动异常处理

11 篇文章 0 订阅

上篇博客:详解Java异常处理——编程式异常处理 介绍了编程式异常的处理,我们知道,用这种方法,在action中需要写大量的关于trycatch的代码。现在我们就使用struts框架的异常处理机制来解决这个问题。

 

还是使用上篇博客的实例,其中大部分代码不需要改变,下面只给出改变的代码。

 

目录结构



LoginAction.java

package struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class LoginAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		LoginActionForm laf = (LoginActionForm)form;
		String username = laf.getUsername();
		String password = laf.getPassword();
		
		UserManager userManager = new UserManager();
		userManager.login(username, password);
		return mapping.findForward("success");
	}

}
这个action中不再需要我们手动书写try、catch等内容。


struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean name="loginForm" type="struts.LoginActionForm"/>
	</form-beans>
	
	<!-- 这里是全局的异常处理配置 -->
	<!-- <global-exceptions>
		<exception key="login.user.not.found" type="struts.UserNotFoundException" path="/error.jsp"/>
		<exception key="login.password.error" type="struts.PasswordErrorException" path="/error.jsp"/>
	</global-exceptions> -->
	
	<action-mappings>
		<action path="/login" 
				type="struts.LoginAction"
				name="loginForm"		
				scope="request"
				input="/error.jsp"		
				>
			<exception key="login.user.not.found" type="struts.UserNotFoundException" path="/error.jsp"/>
			<exception key="login.password.error" type="struts.PasswordErrorException" path="/error.jsp"/>
			 
			<forward name="success" path="/login.jsp" />
		</action>
	</action-mappings>
	
	 <message-resources parameter="resources.MessageResources" />
</struts-config>

页面显示的时候使用<html:errors/>标签。其余代码不变。


运行结果:



从结果可以看出,这种方式跟之前的编程式异常处理差不多,而我们需要书写的代码却少了好多。其实,这些代码并不是不需要,而是因为struts框架替我们封装了,我们不在需要写那些近似重复的代码。但这种方式仍然有它的缺陷,我们可以看出,如果我们需要很多不同类型的异常类,那么我们就需要新建很多类,这样的结果可不是我们想要的。那么,有没有一种方式,既能满足异常处理的需要,又能避免建这么多类呢?


答案是肯定的,不过,得等下篇博客继续讲解了。



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值