当前位置: 首页 > 面试题库 >

资源是在最终之前还是之后关闭?

宋育
2023-03-14
问题内容

在Java 7的try-with-resources中,我不知道finally块和自动关闭发生的顺序。什么顺序

BaseResource b = new BaseResource(); // not auto-closeable; must be stop'ed
try(AdvancedResource a = new AdvancedResource(b)) {

}
finally {
    b.stop(); // will this happen before or after a.close()?
}

问题答案:

资源在捕获或最终阻塞之前被关闭。请参阅本教程。

try-with-resources语句可以具有catch并最终阻塞,就像普通的try语句一样。在try-with-
resources语句中,在声明的资源已关闭之后,将运行任何catch或finally块。

要评估这是一个示例代码:

class ClosableDummy implements Closeable {
    public void close() {
        System.out.println("closing");
    }
}

public class ClosableDemo {
    public static void main(String[] args) {
        try (ClosableDummy closableDummy = new ClosableDummy()) {
            System.out.println("try exit");
            throw new Exception();
        } catch (Exception ex) {
            System.out.println("catch");
        } finally {
            System.out.println("finally");
        }


    }
}

输出:

try exit
closing
catch
finally


 类似资料:
  • javax。servlet。Filter对象既可以用于身份验证(在需要完成任何servlet工作之前,过滤器需要捕获请求),也可以用于XSLT转换(servlet需要完全生成内容)。什么时候执行? 我知道这取决于实现(取决于web容器),但这似乎是所有人都需要解决的问题。 也许在web容器的每个过滤器注册的地方都设置了一个配置选项? 其他: 此外,什么控制过滤器的执行顺序?为什么FooFilter

  • mysql的redolog的写入,是在数据刷盘之前还是之后?

  • https://github.com/xxv/android-lifecycle显示在onStart活动之前调用片段onAttach、onCreateView和onActivityCreated。但是,我尝试记录这个: FirstFragment如下所示: 它印了这个: 主活动创建 主活动启动 第一个片段 第一片段创建 FirstFra0020 onCreateView 第一片段onActivit

  • 问题内容: 最近,我阅读了很多有关Java类加载过程的信息。我经常碰到一些文字,这些文字声称在运行时无法将类添加到类路径并在没有类加载器黑客(URLClassLoaders等)的情况下加载它们 据我所知,类是动态加载的。这意味着仅在需要时才将其字节码表示形式加载并转换为java.lang.Class对象。 因此,如果尚未启动JVM,是否应该在JVM启动后将JAR或 .class文件添加到类路径并加

  • 不管错误情况如何,使用资源尝试是否总是关闭资源?我的意思是考虑以下代码: 会一直关闭吗?我读过Oracle文档,其中说: 无论try语句是正常完成还是突然完成,它都将关闭 因此无论程序正常运行还是抛出异常,它都将起作用。但是,类似或崩溃的情况怎么办?我知道这些条件对块不起作用。那么,使用资源尝试失败的条件是否存在? 这只是我请求的好奇心,谁能说明这一点吗?

  • uniapp 如何保证App切换到后台,或页面跳转后,或关闭APP后,重新打开APP、或返回之前页面时,维持其状态不变