Java中,finally块中的代码什么时候执行

在Java中,finally块中的代码会在以下几种情况下执行:

  1. 正常退出:当try块中的代码正常执行完毕,没有发生任何异常时,finally块中的代码会在try块之后立即执行。

  2. 异常发生:即使try块中抛出了异常,finally块中的代码也会执行。这包括在try块或catch块中发生的异常。

  3. 异常被捕获:如果catch块捕获了异常,finally块会在catch块执行完毕后执行。

  4. return语句:如果在try块或catch块中执行了return语句,finally块仍然会执行,但会在return之前执行。

  5. 抛出异常:如果finally块中抛出了异常,这个异常会被抛出,但如果try块或catch块中已经抛出了异常,那么finally块中的异常会被忽略,而try块或catch块中的异常会被传递出去。

  6. System.exit()调用:如果在try块或catch块中调用了System.exit()方法,finally块中的代码不会执行,因为程序已经终止。

  7. 死亡循环:如果try块或catch块中的代码进入了一个无限循环,而没有外部干预,finally块中的代码将不会执行。

  8. 线程死亡:如果当前执行的线程在try块或catch块中因为某些原因死亡,而没有进入到finally块,那么finally块中的代码也不会执行。

  9. 虚拟机崩溃:如果Java虚拟机(JVM)崩溃,那么任何finally块中的代码都不会执行。

下面是一个简单的示例,展示了finally块的执行情况:

public class FinallyBlockExample {
    public static void main(String[] args) {
        try {
            System.out.println("Try block executing.");
            throw new Exception("Exception in try block");
        } catch (Exception e) {
            System.out.println("Catch block executing.");
        } finally {
            System.out.println("Finally block executing.");
        }
    }
}

在这个例子中,无论是否发生异常,finally块中的代码都会执行。程序的输出将是:

Try block executing.
Catch block executing.
Finally block executing.

这表明即使在try块中抛出了异常,并且catch块捕获了异常,finally块仍然会执行。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值