Finally中代码什么时候不执行?(个人记录,仅供参考)
通常情况下fianlly块中的代码是会执行的,就算try和catch中包含return语句,finally块中的代码也会正常执行。
以下几种非常特殊异常的情况finally块中的代码不会执行
- JVM退出:如果在try中调用了
System.exit()
方法,因为JVM已经退出,finally块中的代码不会执行。- 死机或崩溃:如果在try中出现了严重的错误,导致JVM崩溃或死机,finally块中的代码不会执行。
- 线程被中断:如果在try中,当前线程被中断,finally块中的代码可能不会执行
- OutOfMemoryError:如果在try块中抛出了OutOfMemoryError异常,因为JVM没有足够的内存来执行finally块,finall块中的代码可能不会执行。
- StackOverflowError:如果在try块中抛出了StackOverflowError异常,因为JVM的栈已经溢出,finally块中的代码可能不会执行。