您的位置:首页 > 编程语言 > Java开发

(六)Struts的简单异常处理

2017-03-16 14:41 267 查看

一、异常的分类

 1.1  struts中的异常概念

  • Struts的声明式异常: 不处理异常,将异常交给struts框架来处理。

 1.2 局部异常

  • 局部异常:异常定义在Action里,异常处理只在这个Action中有效,其他action如果出现了异常则无法处理到。
  • struts.xml 中《action》的子标签<exception-mapping result="" exception=""></exception-mapping>异常映射可以用来处理异常,如果产生异常可以将用户引导到异常处理页面。其中result表示异常处理页面的名称,与result标签一起用。exception表示异常的类型,比如java.io.FileNotFoundException这是文件没有找到时的异常类型。
  • 示例:
<package name="default" namespace="/exception" extends="struts-default">
<action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result>

<exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<result name="error_1">/error_1.jsp</result>

</action>
</package>

 解析: 当URL=“工程名/exception/exception_1”的时候,执行ErrorAction类对象,如果这个Action正确执行,则跳转到index_2.jsp这个页面,如果出现了文件没有找到异常(java.io.FileNotFoundException),就把跳转到<result>标签中的的error_1.jsp页面。

 

  • 一般来说,如果页面可能产生的异常比较多的时候,在struts.xml中异常映射就需要定义很多个,此时可以先定义几个具体的异常,然后对于其他异常可以合在一起处理,即

<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>

  • 示例:
<package name="default" namespace="/exception" extends="struts-default">
<action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result>

<exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
<result name="error_1">/error_1.jsp</result> <result name="error_2">/error_2.jsp</result> <result name="error_common">/common.jsp</result> </action> </package>

解析:  如果Action出现java.io.FileNotFoundException或者java.lang.ArithmeticException错误,就会跳转到相应的页面,如果不是这两个异常,则跳转到common.jsp页面。

  •  注意: 如果Action里有多个异常,那么当发现第一个异常的时候,就会跳转异常处理页面,这个Action接下去的异常将不会处理。

 

 

 

  1.2  全局异常

  • 定义在package里,使用<global-exception-mappings>,这个package里的所有action都可以使用。其他包要想使用,继承这个包即可。
<package name="default" namespace="/exception" extends="struts-default">
<global-results>
<result name="error_1">/error_1.jsp</result>
<result name="error_2">/error_2.jsp</result>
<result name="error_common">/common.jsp</result>
</global-results>

<global-exception-mappings>
<exception-mapping result="error_2" exception="java.io.FileNotFoundException"></exception-mapping>
<exception-mapping result="error_1" exception="java.lang.ArithmeticException"></exception-mapping>
<exception-mapping result="error_common" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>

<action name="exception_1" class="action.ErrorAction">
<result name="index_2">/index_2.jsp</result>
</action>
</package>
  • 注意:1.<global-exception-mappings> 标签里不能定义<result name=""></result>

      2.<global-results> 要定义在<global-exception-mappings>之前。

      3.<global-exception-mappings>里的<result>对应的是<global-results>里的<result>里的name。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: