Java 中的异常结构

Java 中的异常结构
1、Error与Exception
Error 是程序无法处理的储物,比如 OutOfMemoryError、ThreadDeath 等。这些异常发生时, Java 虚拟机(JVM)一般会选择线程终止。
Exception 是程序本身可以处理的异常,这种异常分两大类,运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

2、运行时异常和非运行时异常
运行时异常都是 RuntimeExceptiom 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
非运行时异常是 RuntimeExceptiom 以外的异常,是受检查的异常(checked exceptions),其必须被 try{}catch 语句块所捕获,或者在方法签名里通过 throws 子句声明。受检查的异常必须在编译时被捕捉处理。如果不处理,程序就不能编译通过。如 IOException、SQLException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。