概述
异常的基类是 Throwable, Throwable 有两个子类:
- Exception: 表示可以恢复的异常, 编译器可以捕捉。
- Error: 表示编译时和系统错误, 表示系统在运行期间出现了严重的错误, 属于不可恢复的错误。
受检异常和非受检异常
- 受检异常指的是在编译期间会接受编译器检查, 且必须要处理( try... catch处理掉或直接在方法签名中使用throws抛出), 否则会编译出错。- 此类异常是除了 RuntimeException和Error外所有的异常, 例如IOException、InterruptedException、SQLException。
 
- 此类异常是除了 
- 非受检异常 指的是编译期间不会接受编译器检查, 不必处理的异常。 - 此类异常包括了 RuntimeException和Error的所有异常。
 
- 此类异常包括了 
异常处理
一般有两种方法来处理异常 : try...catch 或直接在方法签名中使用 throws 抛出。
catch 使用注意事项
- 参数的异常类型必须是 Throwable类型。
- 如果有多个 catch语句块, 则从上到下必须按照从 子类到父类 的顺序排布, 否则会编译出错。
finally 使用注意事项
- finally里面的代码一般情况下会执行, 但是如果在- try或者- catch中执行- System.exit(1)(即虚拟机退出)时, 不会执行- finally中的代码。
- finally中最好不要出现- return语句, 因为最终执行的一定是- finally里面的- return。