Java异常的分类
首先政治正确,引用一张图:
详细的内容参见深入理解Java异常处理机制
我的理解和分类:
可查异常 非运行时异常
Exception
Throwable
运行时异常
不可查异常
Error
Throwable:可查异常、不可查异常;
Exception:运行时异常、非运行时异常
不可查异常:运行时异常、Error
可查异常是编译器可以检查的,运行前必须处理的异常,比如IOException、SQLException,此类异常需要try-catch捕获或者throws字句抛出;
不可查异常是编译器检查不出,比如除数为0、数组下标越界、空指针,栈溢出、内存溢出,编译器无能为力的;
运行时异常是RuntimeException,比如除数为0、数组下标越界、空指针,这类需要在运行时才能够出现;
非运行时异常是程序运行前必须处理的,否则程序无法编译通过的异常;
异常出现次序:非运行时异常(编译期)-->运行时异常(运行时)-->Error(运行时JVM问题)