Struts的异常处理

 刚才浏览论坛,发现这个专栏下没有贴子,把昨天整理的小东西得出来,大家讨论一下,作个抛砖引玉吧
Struts的异常处理
Struts共有两种异常处理方式,但是基本思路是一样的,第二种是由第一种发展而来。以下分别予以介绍:
一、第一种异常处理方式
1、在Action中产生异常的时候,捕获异常,并创建ActionError对象,最后使用SaveError方法存入ActionErrors集合。
例如:
ActionErrors errors = new ActionErrors();
ActionError error = new ActionError(“error.Invalid”);
errors.add(ActionErrors.GLOBAL_ERROR,error);
saveErrors(request,errors);
2、在页面中通过<html:errors>标签
例如:<html:errors bundle=‘sysError’ >
3、定义资源文件,并在struts_config中声明
例如:资源文件如下
error.Invalid=系统错误
error.String=字符转换错误
把资源文件命名为error.properties,放到classes目录下,在struts_config中声明,如下
<message-resources parameter="error" key="sysError"/>
这样再发生异常的时候,在一面上便能显示“系统错误”了
二、第二种异常处理方式
1、第二种异常处理方式余地种异常处理方式只有一点不同,即,它不用在程序中处理异常并转化为error对象了,只需要在struts_config中配置即可。如下:
<exception key="general.exception" type="java.lang.Exception" scope="request" handler="com.neusoft.base.common.exception.RedirectExceptionHandler" path="/error.jsp" bundle="sysError"/>
其中:
key相当于创建errors对象所使用的标识,也就是在bundle中定义的key。
type标识要处理的异常类型,这也说明如果我要对不同的异常进行不同的处理,就要定义每种不同的异常。
handler:指的是异常处理类,struts为我们提供了一个默认的异常处理类:ExceptionHandler。如果我们要自定义,亦可以从此类继承,例子中的RedirectExceptionHandler便是从ExceptionHandler继承的类。
Path:指出发生异常要导向的页
Bundle:是指使用的资源文件。
这个<Exception>即可以定义在<action>内,也可以定义在<global-exceptions>内,如果定义在<global-exceptions>内,则对所有的action起作用
当发生异常的时候,ExceptionHandler自动捕获异常,并自动转换为Error对象,并存入ActionErrors集合中去。

你可能感兴趣的:(Struts的异常处理)