【struts2】异常处理机制

来源:互联网 发布:阿里云 dnspod 编辑:程序博客网 时间:2024/05/21 09:08

       任何成熟的MVC框架都应该支持成熟的异常处理机制,当然我们可以在Execute方法中手动特定的异常,返回特定的逻辑视图名-但是这样的处理方式非常的粗暴,我们需要写大量的catch块。其中最大的缺点还在于异常处理与代码耦合,一旦改变异常处理方式,必须修改代码。有了strutse我们可以通过声明式的方式管理异常处理。

        使用struts2来处理异常意味着不再需要进行任何的异常处理,而是把异常直接抛给struts2框架处理,struts2框架接收到Action抛出的异常之后,将根据struts2.xml文件配置的异常映射,转入指定的视图资源


打开异常映射功能

       为了使用struts2的异常处理机制,我们需要打开struts2的异常映射功能,开始异常映射需要一个拦截器。

我们在struts-default.xml的配置文件中打开struts2的异常映射

<interceptors>    <!--执行异常处理的拦截器--><interceptor name="exception" class="com.opensymphony.xwork.interceptor.ExceptionMapping.Interceptor"/>        <interceptor-stack name="defaultStack">     <!--引用异常映射的拦截器--><interceptor-ref name="exception"/></interceptor-stack></interceptors>


异常捕捉

       Struts2的异常处理机制是通过在struts.xml文件中配置<exception-mapping…/>元素完成的。配置该元素时需要指定如下两个属性。

       Exception:制定该异常映射所设置的异常类型。

       Result:设置到捕捉到该类型异常后,系统返回的对应的逻辑视图名。

<struts> <package name="struts2" extends="struts-default"> <!-- 配置全局异常映射 --> <global-exception-mappings> <exception-mapping  exception="java.sql.SQLException" result="sql"/> <exception-mapping  exception="java.sql.Exception" result="exc"/> </global-exception-mappings> <action name="login" class="tgb.action.LoginAction"> <result name="success">success.jsp</result> <result name="sql">sql.jsp</result> <result name="exc">error.jsp</result> </action> </package> </struts> 

       上面的配置文件定义了两个全局异常映射,当出现SQLException异常时系统将返回sql逻辑视图,当出现Exception异常时将返回exc逻辑视图。同时当页面响应成功后将由success.jsp逻辑视图。同时我们可以在Action中定义局部的异常映射,来定制异常处理。

    

输出异常信息

当struts2框架系统今日异常处理页面后,我们则可以在对应页面中输出指定异常信息.

        为了在异常处理页面中显示异常信息,我们可以使用Struts2的标签来输出异常信息.

               <s:property value="exeption"/>:输出异常对象本身

               <s:property value="exeption.message"/>:针对第一种方式输出异常信息本身,该方法来输出异常的message信息.
               <s:property value="exceptionStack"/>:输出异常堆栈信息

               

总结

              通过上面的总结我们可以看到使用struts2的异常处理机制,不仅减少了大量的catch块,提高了代码的可读性,而且使用声明式的异常处理机制也很好的实现了代码的解耦,让我们把更多精力来完成业务的处理。

0 0
原创粉丝点击