一、声明式异常捕捉:struts2的异常处理机制是通过在struts.xml文件中配置<exception-mapping .../>元素完成的,配置的时候需要指定两个属性:
1.exception:此属性指定该异常映射所设置的异常类型。
2.result:此属性指定Action出现该异常时,系统转入result属性所指向的结果。
二、根据<exception-mapping .../>出现的位置的不同可以分两种:
1.局部异常映射:将<exception-mapping .../>元素作为<action .../>元素的子元素配置。
2.全局异常映射:将<exception-mapping .../>元素作为<global-exception-mappings>元素的子元素配置。
例如:
xml代码:
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!--配置一个包空间,注意:struts-dufault里已经配置了异常映射拦截器-->
<package name="struts" extends="struts-default">
<!--定义所有的全局结果-->
<global-results>
<!--逻辑名为sql的结果,映射到/exception.jsp页面-->
<result name="sql">/exception.jsp</result>
<!--逻辑名为root的结果,映射到/exception2.jsp-->
<result name = "root">/exception2.jsp</result>
</global-results>
<!--定义所有全局异常映射-->
<global-exception-mappings>
<!--Action抛出SQLException异常时,转入名为sql的结果-->
<exception-mapping exception="java.sql.SQLException" result="sql" />
<!--Action抛出Exception异常时,转入名为root的结果-->
<exception-mapping exception="java.lan.Exception" result="root" />
</global-exception-mappings>
<!--配置本系统的Action-->
<action name="login" class="lee.LoginAction">
<!--下面配置一个局部异常映射,当Action抛出lee.MyException时,转入名为my的结果-->
<exception-mapping exception="lee.MyException" result="my" />
<!--定义返回结果-->
<result name="my">/exception.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
注意:全局异常映射的result属性值通常不要使用局部结果,局部异常映射的result属性值既可以使用全局结果,也可以使用局部结果。
三、输出异常信息
1.<s:property value="exception" />:输出异常对象本身。
2.<s:property value="exceptionStack" />:输出异常堆栈信息。详细的信息,包括错误等。
输出异常信息:<s:property value="exception.message" />