在Java中,所有的异常都继承自 Throwable 类,如下图:
在Throwable类之下分为两大类,Error跟Exception。
Error主要是因为代码运行时jvm出现问题导致的,如,当jvm耗完可用内存时,将出现OutOfMemoryError,这类错误发生时jvm会终止线程,一般不用程序员处理。
Exception是可以由程序捕获并处理的异常,分为运行时异常和其他异常。
运行时异常一般是由程序逻辑错误造成的,如数组越界(ArrayIndexOutBoundException)。编译器不会检查此类异常,并且不要求处理异常。
其他异常如IOException,编译器会检查此类异常,这些异常必须由try catch语句块捕获并处理,否则编译不予通过。