http://blog.csdn.net/hguisu/article/details/6155636
Throwable: 有两个重要的子类:Exception(异常)和Error(错误),两者都是Java异常处理的重要子类,各自都包含大量的子类。
Error:是程序无法处理的错误,表示运行应用程序中较严重的问题。大多数错误与程序源代码无关,是JVM的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
Exception: 是程序本身可以处理的异常。
Exception 类有一个重要子类RuntimeException。RuntimeException类及其子类表示JVM常用操作引发的错误。如:若试图使用空值对象引用–NullPointerException、除数为零—-ArithmeticException,数组越界—rrayIndexOutOfBoundException
注:异常和错误的区别:异常能被程序处理,错误是无法处理的。
通常,Java的异常(包括Exception和Error)分为可查异常(checked exceptions)不可查异常(unchecked exceptions)
可查异常(编译器要求必须处理的异常):正确的程序在运行中很容易出现的、情理可容的异常状况。可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。
RuntimeException及其子类+Error——unchecked异常
其余的—–checked异常,Java编译器会检查他,也就是说,当程序中出现这类异常,要么用try-catch捕获,要么用throws抛出异常,否则编译不会通过。