传统异常处理方式
Java中的所有异常的根类是Throwable,Throwable类派生Exception和Error。
Error表示Java程序中出现一个非常严重的错误。
对Exception异常处理的过程中,一般通过try catch finally语句,或者使用throws Exception来捕获异常。
但这种方式需要书写大量的catch块,非常烦琐。最大的问题是,异常处理与代码耦合。一旦需要改变异常处理方式,必须修改代码。
Struts2异常机制
Struts2的异常处理哲学
Struts2提供一种声明式的异常处理方式。
Struts2中,Action的execute()方法抛出全部异常。异常交给Struts2框架处理。
public String execute() throws Exception
Struts2框架接收到Action抛出的异常后,将根据struts.xml文件配置的异常映射,转入指定的视图资源。
Struts2异常处理机制源于Struts2拦截器。在struts-default.xml中已经配置了相关的拦截器。
声明异常捕捉
通过在struts.xml中配置异常映射元素<exception-mapping.../>,Struts2便能够处理异常了。无需在Action中编写任何异常处理代码。
异常映射拦截器
Struts2通过拦截器对action抛出的异常进行捕获,这个拦截器是:
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor
在struts2的默认配置文件struts-default.xml中,拦截器ExceptionMappingInterceptor已经配置。配置片段如下:
<package name="struts-default"
abstract="true">
………
<interceptor name="exception” class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
………………
<interceptor-stack
name="defaultStack">
<interceptor-ref
name="exception"/>
………………
<default-interceptor-ref
name="defaultStack"/>
从struts-default包继承的”子”包中的action都将使用默认的拦截器栈defaultStack(除非action引用了其他的拦截器),而在这个拦截器栈中引用了exception拦截器(是defaultStack栈中第一个引用的拦截器)。因此,在默认情况下,所有的action自然就引用了exception拦截器,而不需要再配置它了。
配置异常映射
使用exception-mapping元素来配置异常映射,将异常类型映射到指定的结果。
exception-mapping元素有二个属性:
exception:指定异常映射所设置的异常类型。即指定一个异常类型的完整类名
result:此属性指定Action出现该异常时,系统转入result属性所指向的结果。
根据<exception-mapping.../>元素出现位置的不同,异常映射分为两种:
局部异常映射: 将<exception-mapping.../>元素作为<action…/>元素的子元素配置。
全局异常映射: 将<exception-mapping.../>元素作为<global-exception-mapping…/>元素的子元素配置。
全局映射对所有Action都有效,但局部异常仅对异常映射所在的Action内有效。
如果局部异常映射和全局异常映射配置了同一类型,在该Action内,局部异常映射会覆盖全局异常映射。
全局异常映射的result属性值通常不要使用局部结果,局部异常映射的result属性值既可以使用全局结果,也可以使用局部结果。
与result映射的查找规则一样,当一个异常发生时,exception拦截器将首先查找抛出异常的action中的局部拦截器映射,然后再查找全局的异常映射。只要找到一个匹配的,那么对应的结果就这被处理。
输出异常信息
ExceptionMappingInterceptor捕获Action处理方法抛出的异常后,除了从异常映射的配置中查找对应的结果名外,还会将下列两个值放到值栈中,以便在结果页面中访问异常信息。
exception:异常对象本身。
exceptionStack:保存异常发生时的栈跟踪信息。
在结果页面中。可以使用struts2的标签来访问异常信息:
<s:property value=”exception”/> 输出异常对象本身。
<s:property value=“exception.message” />取出异常对象的描述信息。
<s:property value=”exceptionStack” />
输出异常堆栈信息。
例:
此处省去Action与映射结果页面的编写。
<struts>
<package
name=”default” extends=”struts-default”>
<global-results>
<result
name=”login” type=”redirect”>/login.action</result>
<result
name=”sqlException” type=”chain”>/sqlException</result>
<result
name=”exception”>/exception.jsp</result>
</global-results >
<!--全局异常映射-->
<global-exception-mappings>
<exception-mapping result=”sqlException” exception=”java.sql.SQLException”></exception-mapping>
<exception-mapping result=”exception” exception=”java.sql.Exception”></exception-mapping>
</global-exception-mappings>
<action name=”dataAccess” class=”com.xxx.DataAccess”>
<!--局部异常映射-->
<exception-mapping result=”login” exception=”com.xxx.XXXException”></exception-mapping>
<result>/dataAccess.jsp</result>
</action>
</package>
</struts >
分享到:
相关推荐
Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...
在Struts2中,异常处理是一项重要的功能,它确保在应用程序遇到错误时能够优雅地处理,提供友好的用户反馈,并保持系统稳定性。下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** ...
在Struts2框架中,异常处理是至关重要的一个部分,它确保了应用程序的稳定性和用户体验。Struts2提供了多种方式来捕获和处理异常,帮助开发者优雅地处理程序中的错误情况。以下是Struts2异常处理的四种主要方法,...
Struts2是一个流行的Java web框架,它提供了强大的异常处理机制,使得开发者能够优雅地管理和展示在应用程序中出现的错误和异常。以下是对Struts2异常处理机制的详细说明: 1. **异常处理流程**: 当一个Action...
本篇文章将深入探讨Struts2的异常处理策略,以及如何在DAO层进行单元测试配置。 在传统的Web应用中,当一个异常发生时,通常会跳转到错误页面或者返回错误信息。但在现代Web应用中,尤其是涉及到Ajax异步请求时,...
2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`<global-exception-mappings>`...
这篇博客文章“Struts2中异常处理(demo)”可能详细介绍了如何在Struts2框架下优雅地处理程序中的异常。 在Java Web开发中,异常是程序运行时遇到的问题,例如无效的用户输入、资源未找到或内部系统错误。Struts2...
2. **Struts-config.xml配置异常处理**:在框架配置文件中,`<global-exceptions>`标签用于定义全局异常处理规则。例如: ```xml ``` 这段配置表示,如果任何地方抛出了`java.lang.Exception`或其子类,...
【Struts2异常处理】 Struts2是一个基于MVC(Model-View-Controller)架构的Web应用框架。它的异常处理主要通过全局异常映射器配置,可以将特定的异常映射到特定的结果页面或动作。通过`struts.xml`配置文件,...
针对异常处理,Struts提供了一种优雅的方式,使得开发者可以自定义错误处理机制。在给定的文件中,我们看到了一个基于Struts的异常处理方案,主要涉及两个关键点:自定义异常类和自定义异常处理器。 首先,我们来看...
项目中出现的异常通常要用一个友好的异常页面来显示,通过对struts2.xml的配置能拦截全局异常,只要出现异常就会转向异常页面。
Struts2作为一款流行的Java Web框架,其异常处理机制是开发者必须掌握的关键部分。这篇博客主要探讨了在Struts2中如何有效地管理和处理异常,从而提高应用的稳定性和用户体验。 在Struts2中,异常处理主要通过两种...
8. **错误和异常处理**:定义全局的Struts2异常处理类,以及Spring的异常处理器,确保程序的健壮性。 通过SSH整合,开发者可以利用这三个框架的优势,实现高效的Web应用开发,提高代码的可维护性和复用性。在实际...
首先,Struts1.x框架默认的异常处理方式是通过`struts-config.xml`配置文件中的`<global-exceptions>`标签来定义全局异常处理。在这个标签内,你可以声明一个或多个异常类型,并为每个异常指定一个错误页面,当...
在Struts2中,异常处理机制是关键组成部分,确保程序在遇到错误时能够优雅地处理并提供反馈给用户。本文将深入探讨Struts2的异常处理机制,特别是声明式异常捕捉和异常映射。 首先,Struts2的异常处理机制允许...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括表单处理、MVC设计模式支持以及异常处理机制。在文件上传方面,Struts2提供了方便的API和配置方式来处理单个或多个文件的上传。在这个主题中,...
8. **Struts2异常处理机制**:Struts2提供了一套强大的异常处理机制,允许开发者定义特定类型的异常与特定结果的映射。这样,当发生异常时,系统会自动转向预先配置的错误页面,便于统一处理和展示错误信息。 掌握...
**4.5 Struts 2异常处理** 异常处理是任何Web应用开发中必不可少的一部分。这里将讨论如何使用Struts 2来处理异常,并给出示例。 #### 八、总结 通过以上章节的学习,我们可以看到Struts 2框架的强大之处,以及它...