所有异常都是 Throwable 的子类,分为 Error 和 Exception。Error 是 Java 运行时系统的内部错误和资
源耗尽错误,例如 StackOverFlowError 和 OutOfMemoryError,这种异常程序无法处理。
Exception异常中主要包含IOException与 RuntimeException,并不只是这两种,这两种占比较大,其他还有像InterruptedException与ClassNotFoundException等等
异常之间关系:
总的来说,异常可分为受检异常与非受检异常(所有的异常直接划分为RuntimeException与非RuntimeException异常是不准确的,而Exception异常是可以这样划分的)。非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。受检异常需要在代码中显式处理,否则会编译出错。
也即是说RuntimeException是非受检异常的子集。
并且ClassNotFoundException并不是RuntimeException,二者之间没有继承关系,这可以从源码中看出:
public class ClassNotFoundException extends ReflectiveOperationException public class ReflectiveOperationException extends Exception像其他常见RuntimeException的比如ClassCastException 可以直接看出具有继承关系:
public class ClassCastException extends RuntimeException