论文部分内容阅读
摘要:异常通常是指程序运行过程中出现的非正常情况,由于通常代码中的错误是无法避免的,因此异常处理成为开发人员在程序开发中不得不考虑的重要问题。所幸的是Java为我们提供较好的异常处理机制。
关键词:Struts;异常处理
中图分类号:TP314 文献标识码:A文章编号:1007-9599 (2010) 11-0000-01
The Research and Application of Exception Handling Based on Struts
Tian Zaofu
(School of Software Engineering,Tongji University,Shanghai201804,China)
Abstract:Exception is running normally occur during non-normal conditions,due to an error code usually can not be avoided, so the exception handling developer have to consider in program development an important issue.Fortunately,Java provides us with a better exception handling mechanism.
Keywords:Struts;Exception handling
一、异常处理机制
(一)Java的异常处理机制
在Java程序方法的运行过程中,发生了异常,则这个方法生成代表该异常的一个对象,并把它交给Java运行时系统的过程称为抛出异常。当运行时系统收到抛出的异常对象后,运行时系统在方法的调用堆栈中查找到可以处理该异常的方法,并将该异常交给此方法处理。这个过程称为捕获异常。
(二)Struts异常处理
Struts框架在视图层和控制层提供了对异常处理的支持,拥有着较好的异常处理机制。Struts的控制器负责捕获各种异常,包括控制器运行中本身抛出的异常,以及调用模型的业务方法的异常。当异常被控制器捕获的时候,在异常处理代码块中,创建描述异常信息的ActionMessage对象,把它保存在ActionMessages或者它的子类ActionErrors对象中,然后把它保存在特定的范围内,比如request或session。接下来在视图层标签检索特定范围的ActionMessages对象,把本地化错误消息输出到页面上。这种异常处理机制可以避免用户看到原始的java异常信息,可以更友好的把错误信息展示给用户。Struts可以以两种不同方式来处理Action类中execute()方法产生的异常:编程式异常处理、声明式异常处理。
二、个性化异常处理应用
(一)自定义异常类
建立自己的异常类MyException,需要继承自RuntimeException类。
public class MyExceptionextends RuntimeException {
/*异常的编码,对应与国际化资源文件中的key值*/
private String key;
private Object[] values;
/*在构造方法key值对应资源文件中的key,第二个构造方法用于复合消息,其中第二个参数设置给复合消息的参数。*/
public MyException(String key) {
this. key = key;
}
public MyException (String key, Object[] values) {
this.key=key;
this.values = values;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key=key;
}
public Object[] getValues() {
return values;
}
public void setValues(Object[] values) {
this.values=values;
}
}
(二)创建异常处理类
默认struts的异常是通过org.apache.struts.action. ExceptionHandler来处理的,如要根据自己抛出的MyException中的key来构造ActionMessage,就必须重写一个ExceptionHandler,从ExceptionHandler继承,并实现它的execute()方法。
public class MyExceptionHandler extends ExceptionHandler {
public ActionForward execute (…) {
…
if((ex instanceof MyException)) {
MyExceptionmex=( MyException)ex;
error = new ActionMessage(mex.getKey(), mex.getValues());//构建ActionMessage
property = error.getKey();//取出key 值
this.storeException(request, property, error, forward, scope);//存储异常
…
}
}
(三)配置exception
在struts-config.xml中配置exception
(四)配置资源文件
在资源文件中配置异常消息的key值及对应的value值,就可以在前台展示页面通过key值读取到代码所对应的错误信息。
loginerror=Login error, UserName={0}
(五)异常调用
Public void login(String username, String password){
…
If (!"admin".equals(username)||!”passwd”.equals(password)) {
Throw new MyException();
}
…
}
(六)异常信息显示
在path指定的页面中,可以通过 来显示所有异常信息,或者通过 来显示key值对应的异常信息。
三、结语
异常处理是Java语言的重要机制,是开发应用软件必不可少的部分,在struts新的版本中加入了对异常的处理,标志着作为一个整体的解决框架,struts越来越趋于成熟,充分利用struts 提供的异常处理框架,不仅可以节省大量的开发时间,而且能大大提高程序的健壮性、可移植性和可维护性。
关键词:Struts;异常处理
中图分类号:TP314 文献标识码:A文章编号:1007-9599 (2010) 11-0000-01
The Research and Application of Exception Handling Based on Struts
Tian Zaofu
(School of Software Engineering,Tongji University,Shanghai201804,China)
Abstract:Exception is running normally occur during non-normal conditions,due to an error code usually can not be avoided, so the exception handling developer have to consider in program development an important issue.Fortunately,Java provides us with a better exception handling mechanism.
Keywords:Struts;Exception handling
一、异常处理机制
(一)Java的异常处理机制
在Java程序方法的运行过程中,发生了异常,则这个方法生成代表该异常的一个对象,并把它交给Java运行时系统的过程称为抛出异常。当运行时系统收到抛出的异常对象后,运行时系统在方法的调用堆栈中查找到可以处理该异常的方法,并将该异常交给此方法处理。这个过程称为捕获异常。
(二)Struts异常处理
Struts框架在视图层和控制层提供了对异常处理的支持,拥有着较好的异常处理机制。Struts的控制器负责捕获各种异常,包括控制器运行中本身抛出的异常,以及调用模型的业务方法的异常。当异常被控制器捕获的时候,在异常处理代码块中,创建描述异常信息的ActionMessage对象,把它保存在ActionMessages或者它的子类ActionErrors对象中,然后把它保存在特定的范围内,比如request或session。接下来在视图层
二、个性化异常处理应用
(一)自定义异常类
建立自己的异常类MyException,需要继承自RuntimeException类。
public class MyExceptionextends RuntimeException {
/*异常的编码,对应与国际化资源文件中的key值*/
private String key;
private Object[] values;
/*在构造方法key值对应资源文件中的key,第二个构造方法用于复合消息,其中第二个参数设置给复合消息的参数。*/
public MyException(String key) {
this. key = key;
}
public MyException (String key, Object[] values) {
this.key=key;
this.values = values;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key=key;
}
public Object[] getValues() {
return values;
}
public void setValues(Object[] values) {
this.values=values;
}
}
(二)创建异常处理类
默认struts的异常是通过org.apache.struts.action. ExceptionHandler来处理的,如要根据自己抛出的MyException中的key来构造ActionMessage,就必须重写一个ExceptionHandler,从ExceptionHandler继承,并实现它的execute()方法。
public class MyExceptionHandler extends ExceptionHandler {
public ActionForward execute (…) {
…
if((ex instanceof MyException)) {
MyExceptionmex=( MyException)ex;
error = new ActionMessage(mex.getKey(), mex.getValues());//构建ActionMessage
property = error.getKey();//取出key 值
this.storeException(request, property, error, forward, scope);//存储异常
…
}
}
(三)配置exception
在struts-config.xml中配置exception
(四)配置资源文件
在资源文件中配置异常消息的key值及对应的value值,就可以在前台展示页面通过key值读取到代码所对应的错误信息。
loginerror=Login error, UserName={0}
(五)异常调用
Public void login(String username, String password){
…
If (!"admin".equals(username)||!”passwd”.equals(password)) {
Throw new MyException();
}
…
}
(六)异常信息显示
在path指定的页面中,可以通过
三、结语
异常处理是Java语言的重要机制,是开发应用软件必不可少的部分,在struts新的版本中加入了对异常的处理,标志着作为一个整体的解决框架,struts越来越趋于成熟,充分利用struts 提供的异常处理框架,不仅可以节省大量的开发时间,而且能大大提高程序的健壮性、可移植性和可维护性。