关于finally语句块
- finally语句块可以直接和try语句块联用。 try….finally…
- try…catch….finally 也可以.
- 在finally语句块中的代码是一定会执行的。
finally语句块是一定会执行的,所以通常在程序中为了保证某资源一定会释放,所以一般在finally语句块中释放资源。
如果在finally语句块中写了return语句,则会把之前的返回值覆盖,要避免这种情况!
只有以下情况例外:
只要在执行finally语句块之前退出了JVM,则finally语句块不会执行.1
2
3
4
5
6
7
8try {
//退出JVM
System.exit(0);
}
finally {
//不会执行.
System.out.println("finally....");
}
try finally底层实现原理(面试题):
1 | int i = 10; |
关于final, finalize, finally:
三者没有关系,final是修饰符,具体详见final关键字,finalize是方法,在JVM垃圾回收时执行,finally是异常机制中的语句块!