异常的关系结构图
throwable 的子类 error 和 Exception
Error,它表示不希望被程序捕获或者是程序无法处理的错误。
Exception,它表示用户程序可能捕捉的异常情况或者说是程序可以处理的异常。
运行时异常和非运行时异常(对于Exception的分类)
运行时异常,都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等, 可以选择捕获处理,也可以不处理。
非运行时异常,是RuntimeException以外的异常,类型上都属于Exception类及其子类。
检查性异常和非检查性异常(对于Throwable的分类)
检查性异常(非运行时的异常,如IOException),是必须try-catch的,否则程序在编译的时候就会报错。
非检查异常,包括错误Error和Exeception中除RuntimeException的其余异常。