希望可以帮助一些在异常这个指点上没有太好理解的同学
1:异常(理解) (1)异常:就是程序出现的不正常情况。 (2)异常体系: Throwable |--Error 严重的问题,是处理不了的。要改正代码的。 |--Exception 非RuntimeException的,是需要处理的。编译期异常。 |--RuntimeException 不需要处理的,是需要改代码的。运行期异常。 举例: Error: 地震,海啸一些不可抗力的 Exception: 感冒了,头疼一些可治愈的 注意: 每种体系的子类都是以父亲的名称作为后缀。 XxxError XxxException (3)java虚拟机的默认处理方式 把异常的类名,原因,位置等信息显示在控制台。 一旦有异常发生,其后的代码不能继续执行。 (4)异常的解决方案: A:自己处理 基本格式: try{ 可能发生异常的代码; }catch(异常类名 变量名){ 异常的处理代码; }finally{ 释放资源的代码; } 注意:一旦有一次发生,就会立马执行catch里面的代码。 变形格式: try...catch try...catch...catch try...catch...catch...finally try...finally JDK7针对多个catch进行了优化: catch(异常1 | 异常2 | 异常3 ... 变量){} 注意:这些异常必须是平级关系。 和try...catch...catch的不同点是 JDK7的这种方案是必须平级关系,不能有子父关系。 而try...catch...catch父亲放最后是可以的。 B:抛出处理 用throws关键字在方法上声明(抛出)。 C:到底使用谁? a:能自己处理的尽量自己处理。(建议用try...catch) b:实在不行,你先抛了在说。上就业班我们对异常是进行统一处理的。 看到问题,点击鼠标。 可能出现的面试题: (5)finally的特点及面试题 A:特点 里面的代码永远会执行。除非前面退出jvm。c B:面试题 a:请说说final,finally,finalize的区别? b:finally里面的代码永远会执行吗? c:假如在catch里面有ruturn,finally里面的代码还能被执行吗? 如果能,请问是在return前,还是在return后? 如果你能说在中间,就更好了。 (6)Exception和RuntimeException的区别? A:Exception编译时期异常,必须处理的。 如果在方法上,throws了该类型的异常,将来调用者必须处理。 如果在方法内部,throw了该类型的异常,必须在方法上throws该异常。 B:RuntimeException运行时期异常,是不需要处理的。要改代码的。 如果在方法上,throws了该类型的异常,不需要处理。 如果在方法内部,throw了该类型的异常,方法上可以throws该异常,也可以不throws该异常。 (7)throw和throws的用法和区别? A:throw 用法:用在方法内部,后面跟的是异常对象名称。 区别:用throw抛出了编译时期异常,方法上面必须用throws抛出。 用throw抛出了运行时期异常,方法上面可以不用throws抛出。 B:throws 用法:用在方法声明上,后面跟的是异常类名。 区别:用throws在方法上声明了异常,内部可以没有throw
|