异常,为我们处理非正常的业务流程提供了很好的解决方案,如果你有过dbase、c、pascal等过程式语言开发的经历,你一定会深刻体会到,异常机制给你的代码可读行、可维护性带来的好处,同时,程序的健壮性也得到了增强。
在 java项目中,异常设计要注意下面的几点。
一、自定义异常父类的选择
A、自定义异常的父类,可以选择为RuntimeException或Exception。RuntimeException是运行时异常,你可以选择它来做为你的异常父类,因为这种异常不受到编译器检查,因此,给予了程序员很大的灵活性,程序员可以处理这种异常,也可以不处理(实际上并不是不处理,而是不立即处理,等到一个合适的地方再进行处理)。选择RuntimeException作为父类,是很多框架常采用的,如果你是做底层框架的,可以选择 RuntimeException。
B、业务层异常,一般选择Exception作为父类,因为业务层异常比较重要,一般都是要由调用者进行处理或者是要告知调用者会发生这种异常。如果你的代码是提供给第三方厂商用的,业务层封闭统一的异常就显得非常的有必要。这类异常会强制要求程序员进行处理(异常转译或继续声明抛出),程序完整性、健壮性得到了加强。
二、业务层自定义异常结构的设计
A、业务层自定义异常可以考虑按子系统来划分,也就是说,每一个子系统(模块)都有自己的异常定义,每个子系统自己维护自己的,统一向调用者抛出。
B、根据业务类型,从逻辑上划分异常类型,比如:权限相关的,安全相关的,数据库相关的等等。
总的来说,这两种自定义异常也可以混合使用,因为有的时候,子系统(业务模块)本身就是从逻辑上进行划分的。
三、异常结构定义
异常类的父类选定后,再定义自己的异常结构。一般的异常类中,要定义这么一些东西。
A、描述字符串,说明异常的起因,或说明等。
B、异常码。定义一个int或String类型的异常码,异常码在整个系统中统一定义,根据异常继承结构,异常码也可以定义得有层次结构。异常码在大的系统中比较常见,Oracle ,Sqlserver等数据库产品中,或华为、中兴的一些驱动api中。
C、定义一个Throwable的成员变量,用以封装异常结构链。
D、定义无参数、有参数(String,Throwable)的构造方法。
四、在WEB三层模型中,异常的处理
在经典的三层架构模型中,通常都是这样来进行异常处理的:
A、持久层一般抛出的是RuntiomeException类型的异常,一般不处理,直接向上抛出。
B、业务层一般要封装自定义异常,统一向外抛出(这里要注意,如果用spring在业务层管理异常,一定要配置好异常回滚类型,因为spring默认只回滚RuntiomeException类型的)。我也见过一些想省事的人,业务层也不定义任何异常,也不进行try catch,如果业务层出现异常将在表现层进行处理及页面跳转。
C、表现层必须要处理业务层的异常,以正确向客户报告系统出现的问题,这里面是最后一道异常处理的地方。我也见过有懒人在业务层都不处理,直接在web.xml中配置errorPage的,但不建议这么做。
用好异常,对于项目的可维护性、健壮性都有极大的好处,当然,异常也不是万能的,在有些项目中并不适用,比如:纯算法项目,对性能要求极高的项目等,因为异常栈会对系统性能有一定开销,在这些项目中,最后还在老老实实用方法的返回值去标识方法执行的结果,用if else去处理业务逻辑中的非正常情况吧。
原文地址:http://blog.csdn.net/luqin1988/article/details/7970782
分享到:
相关推荐
在Java EE项目中,为了实现统一的异常处理,通常会设计一个异常处理框架。这个框架可能包括全局的异常拦截器,用于捕获未处理的异常,然后根据异常类型和业务需求进行处理,如记录日志、向用户显示友好的错误信息,...
Java EE项目开发实训设计说明书是针对Java企业级应用开发的学习与实践所编写的文档,旨在通过实际项目来训练和评估开发者对于Struts2.x、Hibernate和Spring这三种主流Java Web框架的理解与应用能力。这些框架在现代...
这个"Java + SSM基于Java EE的项目任务跟踪系统"是一个适合毕业设计或课程设计的实例,旨在帮助学生理解并实践企业级应用的开发流程。 **Spring框架** 是一个全面的后端应用开发框架,它提供了依赖注入(DI)和面向...
它结合了多种软件设计技术,特别是在实际项目中,Java EE通过运用开发框架,构建出各种技术组件,简化了现代软件的开发和部署流程。 Java EE的出现,为计算机软件设计领域带来了革新。不同于其他技术,Java EE因其...
Struts 2提供了强大的表单验证、国际化、异常处理和结果映射等功能,简化了大型Web项目的开发。 **Hibernate ORM框架** Hibernate是一个流行的持久化框架,它通过映射Java类到数据库表,实现了对象关系映射(ORM)...
更进一步地,书中还详细讲解了Java SE的核心技术,包括异常处理、集合框架、IO流、多线程、网络编程等高级主题。这些内容对于构建稳固的Java开发基础至关重要。此外,作者还引入了实际的项目案例,如Web应用开发、...
Java EE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的一套标准规范。这个标准由Java Community Process...记得在实践中不断总结和反思,是成长为一名优秀的Java EE开发者的必经之路。
通过本书的学习,读者能够掌握Java EE的核心技术和最佳实践,并能够应用于实际项目开发中。Java EE作为一个成熟的企业级开发平台,不仅提供了强大的功能支持,还具有良好的社区生态,是开发高质量企业应用的理想选择...
在Java中,可能用到的核心概念包括类、对象、接口、继承、多态等面向对象编程特性,以及异常处理、IO流、多线程等基础功能。 MyEclipse是集成开发环境(IDE)的一种,专用于Java EE应用的开发。它提供了代码编辑、...
- 在项目开发过程中,可能会遇到的问题包括但不限于:数据库设计不合理导致查询效率低下、前后端交互异常导致功能不完整、安全防护不足导致数据泄露风险等。 - 针对这些问题,开发者需要不断优化系统架构,改进代码...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
在Java课程设计中,学生们通常会被要求使用Java这门强大的面向对象编程语言来开发一个具体的项目,以检验他们在理论学习基础上的实际操作能力。这个报告旨在详细阐述设计过程、所用技术、遇到的问题以及解决方案,...
- Java SE和Java EE基础:如集合框架、多线程、异常处理、网络编程等。 - MVC设计模式:模型-视图-控制器架构用于组织代码结构。 - 数据库设计与管理:关系型数据库(如MySQL)的表结构设计,SQL查询编写。 - ORM...
* Java EE标准技术:包括JDBC的概念、JDBC的作用、JDBC调用存储过程、JDBC与Hibernate的区别、使用JDBC获得数据库连接、JDBC中的事务异常处理等。 * 数据库:包括确定实体和属性、数据操作、数据控制、事务处理等。 ...
同时,为了保证代码的质量和规范,我们还需要关注异常处理、事务管理、安全性等方面的设计。 总的来说,J2EE项目中的Blog系统设计涉及到了前端界面、后端逻辑、数据库操作等多个层面,通过这个过程,开发者可以深入...
总结来说,JavaEE三大框架的课程设计涵盖了Web应用开发的重要方面:Struts2负责请求处理和视图展现,Spring提供依赖管理和事务控制,Hibernate则处理数据持久化。通过学习和实践,开发者能够构建出结构清晰、易于...
源代码提供了系统背后的实现细节,数据库则记录了论坛的用户信息和讨论内容,而毕业设计论文很可能是对整个项目设计思路、技术选型、实施过程以及遇到问题的详尽分析和总结。 【标签解析】 "java" 这个标签明确了...
本项目通过Java EE、Spring Boot、Vue.js等现代技术栈实现了对兼职实习劳务管理系统的全面设计与开发。系统不仅满足了企业对于兼职实习生高效管理的需求,也为兼职实习生提供了便捷的服务体验。未来,随着技术的发展...
【标签】"java" 明确指出本压缩包的主要技术领域是Java,这意味着其中的内容将专注于Java语言,包括但不限于语法、面向对象设计、异常处理、多线程、集合框架、IO流、网络编程以及Java EE相关的Web开发等。...
- **经验教训**:通过本次实验,可以深刻认识到实践的重要性,同时也能体会到软件开发中的常见挑战,如数据验证、异常处理等。 总之,通过这些实验的学习,不仅可以让学生深入了解Java EE的基础知识和技术栈,还能...