Java 异常类层次结构及怎样设计一个高效合理的异常处理框架
来源:互联网 发布:vasp linux 编辑:程序博客网 时间:2024/05/01 21:29
下面的图展示了Java异常类的继承关系.
图1
绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...
而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。
想要了解更多,请参考: Top 10 Questions about Java Exceptions
相关文章:
- Top 10 Questions about Java Exceptions
- Java Exception Handling Example
- java io class hierarchy diagram
- Operating System Concepts Hierarchy Diagram
设计一个高效合理的异常处理框架
对于一个应用系统来说,发生所有异常在用户看来都是应用系统内部的异常。因此应该设计一套应用系统的异常框架,以处理系统运行过程中的所有异常。
基于这种观点,可以设计一个应用系统的异常比如叫做AppException。并且对用户来说,这些异常都是运行应用系统运行时发生的,因此AppException应该继承RuntimeException,这样系统中所有的其他异常都转译为AppException,当异常发生的时候,前端接收到AppExcetpion并做统一的处理。画出异常处理框架如图 3 :
图 3 一个应用系统的异常处理框架
在这个设计图中,AppRuntimeException是系统异常的基类,对外只抛出这个异常,这个异常可以由前端(客户端)接收处理,当异常发生时,客户端的相关组件捕获并处理这些异常,将"友好"的信息展示给客户。
在AppRuntimeException下层,有各种各样的异常和错误,最终都转译为AppRuntimeException,AppRuntimeException下面还可以设计一些别的子类异常,比如AppDAOException、OtherException等,这些都根据实际需要灵活处理。在往下就是如何将捕获的原始异常比如SQLException、HibernateException转换为更高级一点AppDAOException。
有关异常框架设计这方面公认比较好的就是Spring,Spring中的所有异常都可以用org.springframework.core.NestedRuntimeException来表示,并且该基类继承的是RuntimeException。Spring框架很庞大,因此设计了很多NestedRuntimeException的子类,还有异常转换的工具,这些都是非常优秀的设计思想。
六、 Java异常处理总结
回顾全文,总结一下Java异常处理的要点:
1、 异常是程序运行过程过程出现的错误,在Java中用类来描述,用对象来表示具体的异常。Java将其区分为Error与Exception,Error是程序无力处理的错误,Exception是程序可以处理的错误。异常处理是为了程序的健壮性。
2、 Java异常类来自于Java API定义和用户扩展。通过继承Java API异常类可以实现异常的转译。
3、 异常能处理就处理,不能处理就抛出,最终没有处理的异常JVM会进行处理。
4、 异常可以传播,也可以相互转译,但应该根据需要选择合理的异常转译的方向。
5、 对于一个应用系统,设计一套良好的异常处理体系很重要。这一点在系统设计的时候就应该考虑到。
- Java 异常类层次结构及怎样设计一个高效合理的异常处理框架
- 设计一个高效合理的异常处理框架
- [转]设计一个高效合理的异常处理框架
- 设计一个高效合理的异常处理框架
- java怎样合理来源异常处理
- 高效的Java异常处理框架
- 高效的Java异常处理框架
- 【Java】Java异常类的层次结构
- java异常 之 异常的层次结构
- Java 异常类层次结构
- Java 异常类层次结构
- Java 异常类层次结构
- Java 异常类层次结构
- Java 异常类层次结构
- Java 异常类层次结构
- Java异常类处理层次
- JAVA异常层次结构
- 高效的java异常处理
- SQL语句大全
- 关于输入输出函数的几点说明
- Mysql 存储引擎中InnoDB与Myisam的主要区别
- DSP/BIOS使用之初窥门径——滴答时钟及烧写Flash
- lilnux C++遍历目录
- Java 异常类层次结构及怎样设计一个高效合理的异常处理框架
- PCB设计资料:看到最后才知道是福利
- hdu 5033 Building 几何+单调栈
- LabVIEW上位机与串口通信
- 用VMware 8安装Ubuntu 12.04详细过程(图解)
- 用easybcd在win7安装ubuntu 14.04双系统
- OPENGL_三角形带GL_TRIANGLE_STRIP详解
- 与Hadoop的第一次接触
- JavaSe基础XX25——Javascript_2