1.Java的异常体系结构
A throwable 任何异常、错误的根类 checked
a.Exception异常,可以从异常状态中恢复
a.1 RuntimeException 预料之外的异常,通常代表一个Bug(例如nullpointer)unchecked
a,2 其他Exception,预料之中的异常,代表编程中预期的编程状态checked
b.Error,错误不可恢复的
2.什么是checked/unchecked/runtime exception?
除了Runtime exception之外的其他都是checked的必须捕获,将派生于Error或者RuntimeException的异常称为unchecked异常,
所有其他的异常成为checked异常。runtime exception是uncheck的异常
3.try/catch/finally的执⾏顺序?
先在try里执行语句,如果有异常错误就丢出来用catch(从上到下),如果没有异常就跳过catch块,进入finnally(一定会执行)执行
4.catch中return了,finally还会执⾏么?
finally是一定会被执行的
5.finally中return了。会发生什么事?
finally的return会替代掉原先的return值(绝对不要做)
6.throw/throws的区别
任何时候有问题都可以throw一个异常出来,阻止当前方法的进行,是一个丢出异常的语句
throws则是在用在方法签名上,告知调用者该方法会丢出异常(类似说明)
7.final/finally/finalize的区别?
final用于类的时候声明类不能被覆盖
final作用于变量时,声明变量不可被修改(不能改变指向)
finally是在try/catch的过程中执行最后资源清理工作,一定会得到执行。
finalize在垃圾回收时,由垃圾回收器去调用