Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]

摘抄自:https://www.cnblogs.com/lulipro/p/7504267.html
Java标准库内建了一些通用的异常类,这些类以Throwable为顶层父类.Throwable又派生出Error和Exception类.
错误:Error类以及它的子类的实例,代表了JVM本身的错误,错误不能被程序员通过代码处理,Error很少出现.因此,程序员应该关注Exception为父类的分支下的各种异常.
异常:Exception及其子类,代表程序员运行时发生的各种不期望发生的事件,可以被Java异常处理机制使用,是异常处理的核心.
Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
总体上根据javac对异常的处理要求,将异常类分为两类:
非检查异常(unchecked exception):Error和RuntimeException以及它们的子类属于非检查异常.javac编译时,不会提示和发现这样的异常,不要求在程序里处理这些异常.如果愿意,也可也编写代码处理(try…catch—finally)它们,也可也不处理.对于这些异常,我们应该修正代码,而不是通过异常处理器处理,这些异常发生的原因多半是因为代码写的有问题.如除0ArithmeticError,错误的强制类型转换错误ClassCastException,数组索引越界ArrayIndexOutOfBoundsException,使用了空对象NullPointerException等等.
检查异常(checked exception):除了Error和RuntimeException外的其他异常,都属于检查异常,javac强制要求程序员为检查异常做预备处理工作(使用try…catch—finally或者throws),否则编译不通过.这样的异常一般是由程序的运行环境导致的.因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着.如SQLException\IOException\ClassNotFoundException等.
需要明确的是:检查和非检查是对于javac来说的,这样就很好理解和区分了.