1.finally块中的代码是什么时候被执行?
finally块的作用就是为保证无论出现什么情况,finally块里的代码一定会被执行,finally执行也在return之前。如果try-finally,catch-finally中都有return,那么finally中的return将会覆盖别处的return语句。对于基本数据类型,finally改变return的值对返回值没有什么任何影响,而对引用类型由影响。
2.异常处理的原理是什么
异常是指程序运行时(非编译时)所发生的非正常情况或错误,JVM就会将出现的错位表示为一个异常并抛出。这个异常可以在catch程序块中进行捕获,然后进行处理。
Throwable(父类)-------Error
|------------Exception
3.运行时异常和普通异常的区别
检查异常 | 运行时异常 |
---|---|
编译阶段 | 运行阶段 |
强制 | 非强制 |
不会导致程序出错,进行处理后可以继续执行后续操作 | 线程中止 |
IO异常 | NullPointerException |