Finally一定会被执行嘛
首先 , 我们需要了解 , 什么时候会使用到finally ?
一般情况下 , 我们使用finally会搭配try...catch一起使用 ,用于做一些资源关闭的处理。
在我们学习过程中 ,了解到无论try中有没有发生异常 , 最终都会执行finally语句块中的内容 。 那么是否finally在任何情况下都会被执行呢?
其实 , finally语句块在两种情况下不会执行。
- 程序还没有进入到try语句块就因为异常导致程序终止 , 这个问题主要是程序员在编写代码时, 异常捕获的范围不够。
- 在try或者catch语句块中 ,执行了System.exit 终止正在运行的Java虚拟机 。 (如果exit方法中参数是0 , 那么就是正常退出 , 否则就是非正常退出。)
另外 , 还有个别特殊情况也不会执行:
- 程序所在的线程死亡。
- 关闭cpu;