Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 算法 小程序 Arthas JVM juc AQS Docker DevOps


Java 语法糖 - try with resource

Java 大约 961 字

前提

需要实现AutoCloseable接口。

示例一

Java 代码

public class Test8 {

    public static void main(String[] args) {
        try (InputStream is = new FileInputStream("/a.txt")) {
            System.out.println(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

反编译 class

可以看到:

如果出现异常后在catch中再次进行try来关闭流,如关闭流出现异常就追加到异常中,最后抛出异常。

如果没有异常则正常close

public class Test8 {
    public Test8() {
    }

    public static void main(String[] args) {
        try {
            FileInputStream is = new FileInputStream("/a.txt");

            try {
                System.out.println(is);
            } catch (Throwable var5) {
                try {
                    is.close();
                } catch (Throwable var4) {
                    var5.addSuppressed(var4);
                }

                throw var5;
            }

            is.close();
        } catch (IOException var6) {
            var6.printStackTrace();
        }

    }
}
阅读 63 · 发布于 2022-04-26

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批