一:Java中异常的分类:

二:java中的异常和错误都继承自java.lang.Throwable   这个类有两个直接的子类Error和Exception。   在异常处理的时候,都会接触到受检异常(checked exception)和非受检异常(unchecked exception)这两种异常类型。非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。两种类型的异常在作用上并没有差别,唯一的差别就在于使用受检异常时的合法性要在编译时刻由编译器来检查。正因为如此,受检异常在使用的时候需要比非受检异常更多的代码来避免编译错误。 对于上图蓝色部分为受查异常,程序员合理的处理(catch)可以使代码回到正常流程。 对于上图的绿色部分为非受查异常,error中的OOM为JVM内部的严重问题,程序员不用处理。其他的为可以避免的异常例如空指向,数据格式异常,违规的写法,下标越界等。