`

SSH4项目异常处理实践(一)

 
阅读更多

 

异常处理的作用


      (1)系统出问题后,方便开发人员快速定位和找到问题。


      (2)最好使用细粒度的自定义异常,人性化提示和处理。

 

 

DAO层的异常处理。

 

       1.SSH4框架抛出异常,DAO层无需再显式抛出。DataAccessException 和 HibernateException都是运行时异常(unchecked非检测型异常)
           (1)DAO 使用Hibernate3时,Spring提供继承HibernateDaoSupport,获得getHibernateTemplate().
                 默认抛出org.springframework.dao.DataAccessException异常(getHibernateTemplate()方法抛出的)

 

           (2)DAO 使用Hibernate4时,Spring不提供HibernateDaoSupport,自己写的模板getSessionFactory().getCurrentSession()实现
                默认抛出org.hibernate.HibernateException异常

  
       2.DAO 的异常被上面两个异常之一封装,不会再抛出SqlException(检测型异常),所以即使接口中抛出SqlException也捕捉不到。
           即使抛出也没意义,因为service层处理不了这异常。

           所以DAO层的异常通常不处理(不throws 也不try-catch) ,要抛出的只是自定义异常(业务需要时)。


Service层的异常处理  :需要定义业务异常类,对异常进行细分。

 

   1.除了调用了抛checked的异常的方法外,没必要在每个方法后都加throws Exception或者throws XXXException,
     因为没有意义,加不加如果出异常了都会往上抛出。

 

   2.即使调用了抛checked的异常的方法,也最好try-catch处理,转化成自定义的业务异常。

 

   3.业务异常BusinessException定义成继承runtimeExeption。也不需要
      写法是:
 

             //业务代码
               if(业务状态){

                throw new BusinessException("XXXX");

               }

 
      如果方法中调用了抛checked的异常的方法抛出了xxxException:
    

        try{

             }cath(xxxException  e){
               //转化成业务异常
               throw new BusinessException("XXXX",e);
               //throw new BusinessException("XXXX");--不推荐,因为这样的话就丢失了异常堆栈信息
             }

 
          
   4.spring事务管理默认回滚条件是runtimeExcetion,因为SQLException等异常被转化成了HibernateException或者DataAccessException,都属于runtimeExeption异常。
     如果希望设置为Checked异常也可以配置实现:<tx:method name="*" rollback-for="java.lang.Exception"/>

     但是不推荐,Spring和Hibernate对Dao层异常的处理都倾向于使用runtimeExeption异常,因为调用者能抛出或者catch,但是并不能解决问题。
 

   5. 需要注意:从Hibernate 3.X.X版本(不知道具体版本)开始HibernateException定义成RunTimeException异常。
             所以,对于低版本的Hibernate,由于HibernateException异常含有(或属于)Checked异常,
             需要注意下因为抛出的是checked异常导致事务不会回滚的情况。

 

Action层的异常处理

 

   只捕获自定义应用异常,其他异常可以上抛(不管它不使用throws 也不try-catch,其实也是上抛),也可以封装成errorMessage。
            Action层的异常,是上抛给Struts2框架,通过配置文件配置跳转的页面,还是直接转化成errorMessage返回给用户,需要看情况。
           即:给用户看到的是一个提示,还是一个错误提示的页面,可以自己选择。

          action层日志
             1.Struts2提供了异常拦截器,拦截器会将定义的异常捕获,记录日志,然后根据配置的异常的类型顺序跳转到相应的页面。
             2.如果觉得Struts2自己的异常拦截器不够完善,可以自己写个异常拦截器。这也是一劳永逸的做法。
             3.灵活日志的做法是每个action中都new一个logger对象,直接记录日志,不过需要自己编码,可能有人觉得复杂。

 

3个日志

 

        系统运行日志:记录系统的运行情况,跟踪代码运行时轨迹;

       异常和错误日志:记录异常堆栈信息,以供开发人员查看分析;

       业务日志:记录业务信息和用户操作,例如用户登录、删除数据、更新数据等。
                        哪些操作需要产生操作日志,可以做成配置,甚至把用户IP、登录名、系统、时间、操作等保存到数据库。

 

 

 

分享到:
评论

相关推荐

    SSH配置详细步骤及异常处理

    本文将深入探讨SSH配置的详细步骤以及在配置过程中可能遇到的异常处理。 首先,我们从Struts开始。Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。配置Struts通常包括以下步骤: 1. 添加...

    SSH框架整合项目源码

    在SSH项目中,Hibernate负责数据的持久化,通过实体类映射数据库表,通过SessionFactory创建Session,进而进行CRUD(创建、读取、更新、删除)操作。 在这个“SSH框架整合项目源码”中,可以看到如何将这三个框架...

    ssh完整项目商城系统

    SSH,全称Spring、...此外,对于初学者,还可以掌握数据库设计、事务管理、异常处理等方面的知识,提升自己的Java Web开发能力。通过分析和运行这个项目,可以提高实践操作技能,为未来参与更复杂的项目奠定基础。

    java_SSH项目

    6. **异常处理**:SSH项目通常会有全局的异常处理机制,如Struts2的全局异常拦截器,统一处理可能出现的错误并返回合适的响应。 7. **界面展示**:虽然SSH主要关注后端逻辑,但合同管理的前端可能使用JSP、...

    一个SSH项目

    标题 "一个SSH项目" 暗示我们正在讨论一个基于Spring、Struts和Hibernate(SSH)集成框架的Java Web项目。SSH是Java开发领域中常用的一种企业级应用框架,用于构建高效、可重用和模块化的Web应用程序。下面将详细...

    SSH2项目整合

    这个"SSH完整整合空项目"提供了一个基础的框架结构,让初学者可以在此基础上添加自己的业务逻辑,实践SSH的整合应用。通过学习和实践这个项目,初学者能够掌握Java Web开发的基本流程,了解SSH框架的协同工作方式,...

    ssh2项目的源码

    SSH2项目源码详解 SSH2,即Spring、Struts2和Hibernate的组合,是Java Web开发中的一个经典MVC框架。这个项目采用这三大框架构建,为开发者提供了灵活、高效且可扩展的开发环境。下面我们将深入探讨SSH2框架中的...

    JAVA SSH项目参考

    总的来说,"JAVA SSH项目参考"提供了一个实践平台,让你能够在实际项目环境中学习和应用SSH框架。通过研究和调试这个项目,不仅可以加深对SSH框架的理解,还能提高你的Java Web开发技能。无论是对于新手还是有经验的...

    java SSH 小项目

    开发者可以尝试将SSH项目迁移到Spring Boot,或者添加更多的功能,如权限管理、日志记录、异常处理等,以增强实战经验。 8. **社区与资源**:在学习过程中,开发者可以参考官方文档、教程、Stack Overflow上的问题...

    ssh2完整项目源代码

    - **错误和异常处理**:观察SSH2如何优雅地处理程序中的错误和异常。 - **国际化和本地化**:可能涉及到多语言支持,学习如何实现不同地区的用户界面。 通过实际操作和调试这些源代码,开发者能够更好地理解SSH2...

    SSH整合小项目

    异常处理策略的设定,通常会结合Spring的AOP进行全局异常捕获;以及视图层的渲染,可能使用JSP、FreeMarker或其他模板引擎。 "SSH整合小项目"这个资源包含了实现上述功能的所有文件,包括配置文件、源代码、模型类...

    SSH2 项目源码

    通过深入研究SSH2项目源码,不仅可以提升对SSH2协议的理解,还可以学习到网络编程、加密算法、安全实践等相关知识,对于提高软件开发和网络安全技能具有重要意义。同时,如果你计划开发自己的SSH客户端或服务器,...

    SSH框架搭建源码

    7. **异常处理**:SSH框架通常会有统一的全局异常处理机制,对可能出现的异常进行捕获和处理。 8. **视图渲染**:登录成功或失败后,Struts2会根据配置的结果转发或重定向到相应的JSP页面进行显示。 通过这个...

    易懂的ssh2项目实例(有一个小问题没解决)

    对于初学者来说,理解并实践这个SSH2项目实例是一个很好的学习机会,它不仅涵盖了SSH2的基本用法,还可能涉及到异常处理和调试技巧。通过这个实例,初学者可以深入理解SSH2的工作原理,以及如何在实际项目中应用这些...

    SSH oracle项目

    这些文件共同构成了与Oracle数据库交互的完整流程,包括数据库连接配置、SQL语句的编写、事务管理、异常处理等。 为了更好地理解和使用这个项目,你需要熟悉以下几个方面: 1. **SSH框架的集成和配置**:理解每个...

    SSH+MYSQL完整java商城项目

    它提供了丰富的拦截器和结果类型,使得开发者可以轻松实现认证、授权和异常处理等功能。 2. **Spring**:Spring框架是Java企业级应用的核心,它提供依赖注入(DI)和面向切面编程(AOP),简化了组件的管理和配置。...

    比较好的SSH整合项目

    SSH整合是Java Web开发中的一种常见技术组合,指的是Spring、Struts和Hibernate这三个开源...在实践中,你会遇到如事务管理、异常处理、国际化和本地化、安全性等方面的问题,这些都是Java Web开发中不可或缺的知识点。

    ssh2项目练习

    4. 异常处理:提供统一的异常处理机制,保证程序的健壮性。 5. 测试:进行单元测试、集成测试和压力测试,确保系统稳定可靠。 通过SSH2项目练习,开发者可以深入理解这三个框架的集成应用,提升Java Web开发能力,...

    ssh框架项目教程源码

    总的来说,"ssh框架项目教程源码"是一个很好的学习资源,它将理论与实践相结合,帮助初学者快速掌握SSH框架的使用,同时对有经验的开发者来说,也是一个深入理解框架内部机制的好材料。通过详细研究和实践,你可以...

    ssh项目整合s2s4h5

    SSH是Java Web开发中的一个流行框架组合,包括Struts2、Spring和Hibernate。这个"ssh项目整合s2s4h5"标题表明了一个基于Struts2.3.24、...而"ssh项目整合s2s4h5"不仅是一个技术实践,也是开发者技能和经验的体现。

Global site tag (gtag.js) - Google Analytics