【问题标题】:why finally block doesn't execute? [duplicate]为什么finally块不执行? [复制]
【发布时间】:2016-02-04 02:48:57
【问题描述】:

为什么finally块这段代码没有执行?它只打印 1. finally 块在 System.exit(0); 之后不执行吗?

    void method2() {
    try {
        System.out.println("1");
        System.exit(0);
    } finally {
        System.out.println("3");
    }
}

【问题讨论】:

  • 应用程序终止后代码不会继续执行。为什么你会不这么认为?

标签: java finally


【解决方案1】:

System.exit(0) 实际上完全停止程序的执行。删除 System.exit 因为您实际上并没有尝试在那里退出您的代码。

【讨论】:

    【解决方案2】:

    删除 SYSTEM.EXIT,因为它会退出整个程序,不管它后面是什么。虽然它在 Try 它仍然进入代码块:)

    【讨论】:

      【解决方案3】:

      System.exit(0)finally 块执行之前终止运行时。将其移至System.out 之后的finally 块。

      【讨论】:

        【解决方案4】:

        System.exit(); 关闭虚拟机。在此之后唯一可以执行的是使用Runtime.addShutdownHook(Thread) 创建的关闭挂钩。

        【讨论】:

          猜你喜欢
          • 2020-05-17
          • 2017-06-27
          • 2013-05-01
          • 2015-05-17
          • 1970-01-01
          • 1970-01-01
          • 2012-09-07
          • 2013-03-14
          • 1970-01-01
          相关资源
          最近更新 更多