标签:
首先贴上JAVA常见的异常类之间的继承关系图
由图可以看出,基类为Throwable,Error和Exception类继承Throwable,Error下细分为AWTError(不太清楚),IOError(输入输出类),LinkageError(常见于JAR包冲突),ThreadDeath(线程类)。
Error由虚拟机生成并抛出,属于JVM系统内部错误或者资源耗尽等严重情况(程序无法处理的错误),属于JVM担负的责任,因而这类异常事件的发生后无法恢复或者无法对其进行捕获,error产生后最终将导致应用程序中断(JVM执行线程中断)。但是ERROR在某种场合下可以进行转译,即ERROR可以转译为Exception或者RuntimeException,从而挽回Error产生所带来的严重负面影响。
而Exception类下类别则非常多,首先分为两大类:RuntimeException以及非RuntimeException,(对应着Unchecked Exception以及Checked Exception)
RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。对于运行时异常(runtime exception),可以对其进行处理,也可以不处理。推荐不对运行时异常进行处理。
非RuntimeException:Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常。一般来说,非RuntimeException一般都是外部错误,其必须给try{}catch...finally语句块捕获异常。也可以在可能发生该类型异常的方法写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去,可能最终由JVM进行处理。(如最常见的文件读写,数据库读写等操作)
标签:
原文地址:http://www.cnblogs.com/qq29oo/p/5296988.html