1.两种异常类型:受检查异常(checked)和不收检查异常(unchecked)。受检查异常需要要用throws在方法后构造函数上声明,不受检查异常不需要声明,就算方法和构造函数的执行可能或抛出这种异常。
2.Exception和Error:都是Throwable的子类。Exception用于程序可以捕获的异常,Error定义了不期望被用户程序捕获的异常。
3.throw和throws:
- throws出现在方法函数头;而throw出现在函数体;
- throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象;
- 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

4.finally代码块的作用:无论是否捕获异常,finally代码块都会被执行,主要在这里写释放资源的代码,如I/O缓冲区,数据库连接等。
5.异常处理完成后,Exception会在下一个垃圾回收周期被回收。
6.finally代码块和finalize()方法:finally代码块是无论是否抛出异常都会执行的代码块,finalize()方法是在所属对象被回收之前有JVM调用的方法。
7.编程习惯:
- 在写程序时,对可能会出现异常的部分通常要用try{...}catch{...}去捕捉它并对它进行处理;
- 用try{...}catch{...}捕捉了异常之后一定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
- 如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
- 如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

被折叠的 条评论
为什么被折叠?



