ssh项目异常用处理方式

原创 2012年03月22日 23:44:13

在struts2中封装了自己的异常处理方式。我们在项目中可以根据自己的需要来处理自己的异常。

一  异常信息封装

可以建一个异常信息封装类,将项目中常见异常信息进行封装,常见信息包括:

 1.异常种类:  

  如: 数据库操作异常;  应用操作异常(业务异常,如 权限不够等) ; 系统异常(如 应用服务器异常)

2.具体异常:

 如:"该数据库不存在!" 等等


二  异常处理

 可以在持久层或业务逻辑层捕获处理,也可以层层向上抛,直到Action层,在Action进行捕获。

在Action进行捕获之后可以有两种处理方式:

1.将该异常 加上自己的信息throw出来,如:

.........

.........

} catch (UnifyUserException u) {
            throw new UnifyUserException("添加角色失败!");
        }


这时需要在struts.xml中配置异常处理信息,如:

 在<package 中加入全局异常映射:

<!-- 全局异常映射 -->
    <global-exception-mappings>
      <exception-mapping result="allError" exception="java.lang.Exception">
      </exception-mapping>
    </global-exception-mappings>
    <!-- 全局异常映射 -->

如果系统要求不是很严格,可以用全局异常映射将所有异常都转发到一个公用的页面,这时需要在抛出异常的Action中加入该全局映射,如:

<action name="login" class="logionAction">
            <result name="success">index.jsp</result>
            <result name="error">login.jsp</result>
            <result name="allError">../operaterFailed.jsp</result>
 </action>

如果想具体一点,可以配置针对具体Action的具体异常,这时需要配置局部异常处理,如:

<action name="MASTERACTION_*" class="masterAction"  method="{1}">

  <!-- 局部异常映射 -->
           <exception-mapping result="nullPoint" exception="java.lang.NullPointerException"></exception-mapping>
           <exception-mapping result="sql" exception="java.sql.SQLException"></exception-mapping>
           <!-- 异常转向页面 -->
           <result name="allError">../operaterFailed.jsp</result>
           <result name="nullPoint">../operaterFailed.jsp</result>
           <result name="sql">../operaterFailed.jsp</result>
   </action>


最后需要在指向的存放异常信息的页面输出异常信息,如:

例如/operaterFailed.jsp页面加上:
   <s:property value="exception.message"/>


此时该页面上就会显示在Action中throw出的异常信息:"添加角色失败!“


2.将异常捕获,但是不throw,而是添加到Struts2的错误处理如ActionError中,然后在页面中显示出来,如:

try{

。。。

}     catch (UnifyUserException u) {

this.addActionError("绑定角色失败!");

}

在页面上显示出来,如:

<font color="red"><s:actionerror/></font>


三  异常展示方式

异常展示方式常用的可以有:

1,所有的异常页面都公用一个页面,比如在配置文件中定义一个全局异常映射即可实现。不过这种做法不推荐,信息不详细。

2.具体到某个操作(方法)的异常显示,如在一个页面中来单独显示错误信息,

3.在操作页面显示错误信息,比如在登陆页面显示 用户名密码有误

针对第3种是推荐并且常用的做法,一般通过异常捕获、Action手工校验、struts框架校验来实现。


总之异常捕获和处理要适当,不要所有的方法都要捕获,不但没有必要也会影响到系统效率,根据具体情况适当处理!


 


SSH全局异常抛出并输出页面

1、从dao层、service层到action层都直接”throws Exception“,不做try-catch异常处理;2、在struts.xml文件配置全局异常抛出,并指定结果输出页面;3. 编...

SSH开发常见异常原因和解决方案

编程运行环境是MyEclipse8.6 + Tomcat6.1.3 + MySql 问题一:出现异常 java.lang.NoSuchMethodError: antlr.collect...

SSH整合,spring事务管理不回滚问题

Spring的事务回滚,当且仅当捕获到RuntimeException类型异常时,才会回滚,对普通Exception异常无效。 以下是我Service层捕获异常,并抛出RuntimeExce...

SSH整合常见错误

1. org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManage...

SSH项目中异常处理与日志记录

1.找出应用异常,再写出自定义异常类。所谓应用异常就是系统的可预见的各种异常。如用户登录密码错误,注册时用户名有重复等。自定义异常类一般继承于RuntimeException,这样便于捕捉到后不用再在...

ssh框架整合异常处理

1:Cannot locate the chosen ObjectFactory implementation: spring  缺少jar包:struts2-spring-plugin-2.1.8...

SSH中异常处理

异常处理在实际项目开发中异常是需要统一处理的,截获OrgManagerImpl中抛出的信息,要不要都行利用struts中的处理机制(1.编程处理(手工):try/catch截获异常(这种在统一的时候不...

SSH异常和日志处理方案

SSH异常和日志处理方案 1. 异常的种类        Java异常机制是为了对程序中可能出现的已知错误进行捕获,并进行相应处理。从是否反馈给用户来看,存在三类异常: 数据库操作异常: 系统...

SSH2框架整合常见错误整理【不断更新中】

又一个问题1、 当在几种框架集成的时候,在调用HibernateDaoSupport中的某个方法时会出现: java.lang.NoSuchMethodError: antlr.collect...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ssh项目异常用处理方式
举报原因:
原因补充:

(最多只允许输入30个字)