异常处理的作用
(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配置的详细步骤以及在配置过程中可能遇到的异常处理。 首先,我们从Struts开始。Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。配置Struts通常包括以下步骤: 1. 添加...
在SSH项目中,Hibernate负责数据的持久化,通过实体类映射数据库表,通过SessionFactory创建Session,进而进行CRUD(创建、读取、更新、删除)操作。 在这个“SSH框架整合项目源码”中,可以看到如何将这三个框架...
SSH,全称Spring、...此外,对于初学者,还可以掌握数据库设计、事务管理、异常处理等方面的知识,提升自己的Java Web开发能力。通过分析和运行这个项目,可以提高实践操作技能,为未来参与更复杂的项目奠定基础。
6. **异常处理**:SSH项目通常会有全局的异常处理机制,如Struts2的全局异常拦截器,统一处理可能出现的错误并返回合适的响应。 7. **界面展示**:虽然SSH主要关注后端逻辑,但合同管理的前端可能使用JSP、...
标题 "一个SSH项目" 暗示我们正在讨论一个基于Spring、Struts和Hibernate(SSH)集成框架的Java Web项目。SSH是Java开发领域中常用的一种企业级应用框架,用于构建高效、可重用和模块化的Web应用程序。下面将详细...
这个"SSH完整整合空项目"提供了一个基础的框架结构,让初学者可以在此基础上添加自己的业务逻辑,实践SSH的整合应用。通过学习和实践这个项目,初学者能够掌握Java Web开发的基本流程,了解SSH框架的协同工作方式,...
SSH2项目源码详解 SSH2,即Spring、Struts2和Hibernate的组合,是Java Web开发中的一个经典MVC框架。这个项目采用这三大框架构建,为开发者提供了灵活、高效且可扩展的开发环境。下面我们将深入探讨SSH2框架中的...
总的来说,"JAVA SSH项目参考"提供了一个实践平台,让你能够在实际项目环境中学习和应用SSH框架。通过研究和调试这个项目,不仅可以加深对SSH框架的理解,还能提高你的Java Web开发技能。无论是对于新手还是有经验的...
开发者可以尝试将SSH项目迁移到Spring Boot,或者添加更多的功能,如权限管理、日志记录、异常处理等,以增强实战经验。 8. **社区与资源**:在学习过程中,开发者可以参考官方文档、教程、Stack Overflow上的问题...
- **错误和异常处理**:观察SSH2如何优雅地处理程序中的错误和异常。 - **国际化和本地化**:可能涉及到多语言支持,学习如何实现不同地区的用户界面。 通过实际操作和调试这些源代码,开发者能够更好地理解SSH2...
异常处理策略的设定,通常会结合Spring的AOP进行全局异常捕获;以及视图层的渲染,可能使用JSP、FreeMarker或其他模板引擎。 "SSH整合小项目"这个资源包含了实现上述功能的所有文件,包括配置文件、源代码、模型类...
通过深入研究SSH2项目源码,不仅可以提升对SSH2协议的理解,还可以学习到网络编程、加密算法、安全实践等相关知识,对于提高软件开发和网络安全技能具有重要意义。同时,如果你计划开发自己的SSH客户端或服务器,...
7. **异常处理**:SSH框架通常会有统一的全局异常处理机制,对可能出现的异常进行捕获和处理。 8. **视图渲染**:登录成功或失败后,Struts2会根据配置的结果转发或重定向到相应的JSP页面进行显示。 通过这个...
对于初学者来说,理解并实践这个SSH2项目实例是一个很好的学习机会,它不仅涵盖了SSH2的基本用法,还可能涉及到异常处理和调试技巧。通过这个实例,初学者可以深入理解SSH2的工作原理,以及如何在实际项目中应用这些...
这些文件共同构成了与Oracle数据库交互的完整流程,包括数据库连接配置、SQL语句的编写、事务管理、异常处理等。 为了更好地理解和使用这个项目,你需要熟悉以下几个方面: 1. **SSH框架的集成和配置**:理解每个...
它提供了丰富的拦截器和结果类型,使得开发者可以轻松实现认证、授权和异常处理等功能。 2. **Spring**:Spring框架是Java企业级应用的核心,它提供依赖注入(DI)和面向切面编程(AOP),简化了组件的管理和配置。...
SSH整合是Java Web开发中的一种常见技术组合,指的是Spring、Struts和Hibernate这三个开源...在实践中,你会遇到如事务管理、异常处理、国际化和本地化、安全性等方面的问题,这些都是Java Web开发中不可或缺的知识点。
4. 异常处理:提供统一的异常处理机制,保证程序的健壮性。 5. 测试:进行单元测试、集成测试和压力测试,确保系统稳定可靠。 通过SSH2项目练习,开发者可以深入理解这三个框架的集成应用,提升Java Web开发能力,...
总的来说,"ssh框架项目教程源码"是一个很好的学习资源,它将理论与实践相结合,帮助初学者快速掌握SSH框架的使用,同时对有经验的开发者来说,也是一个深入理解框架内部机制的好材料。通过详细研究和实践,你可以...
SSH是Java Web开发中的一个流行框架组合,包括Struts2、Spring和Hibernate。这个"ssh项目整合s2s4h5"标题表明了一个基于Struts2.3.24、...而"ssh项目整合s2s4h5"不仅是一个技术实践,也是开发者技能和经验的体现。