异常层次结构

所有的类都是从Throwable继承而来。
Error描述了Java运行时系统的内部错误和资源耗尽错误,一般没有什么解决方法。
unchecked异常和checked异常
Unchecked异常:派生于Error或者RuntimeException的异常称为unchecked异常。不提供异常处理编译。可通过
Checked异常:其他异常成为checked异常。不提供异常处理无法通过编译。
为什么区别checked和unchecked异常
编译器将检查你是否为所有的chekced exception提供了异常处理机制。
举例,
比如说我们使用Class.forName()来查找给定的字符串的class对象的时候,如果没有为这个方法提供异常处理,编译是无法通过的。
RuntimeException
如果出现了RuntimeException,就一定是程序员自身的问题。
比如说,数组下标越界和访问空指针异常等等,只要你稍加留心这些异常都是在编码阶段可以避免的异常。
- Exception:在程序中必须使用try…catch进行处理或者用throws声明继续抛给上层调用者。
- RuntimeException:可以不使用try…catch进行处理或用throws声明,但是如果有异常产生,则异常将由JVM进行处理。
