1.异常体系
----|Throwable 所有错误或异常的父类
--------|Error(错误)
--------|Exception(异常)一般能通过代码处理
------------|运行时异常:方法上可以不声明,调用者可以不处理
------------|编译时异常:方法上必须要声明,调用者必须要处理
2.为何有差异
运行时异常都是可以通过程序员良好的编程习惯避免的,所以java编译器没有做严格要求。例如:ArithmeticException、NullPointerException、ClassCastException。
而无法通过代码避免的异常,必须要做好处理措施。