阿里巴巴Java开发手册-finally块必须对资源对象、流对象进行关闭操作,如果有异常也要做try-cach操作

35 篇文章 1 订阅
17 篇文章 1 订阅

对于JDK7及以上版本,可以使用try-with-resources方式

使用方式:

    /**
     * https://www.cnblogs.com/itZhy/p/7636615.html
     * 其实这种方式只是语法糖,反编译以后还是tryCacheThrowTest()中的代码
     * https://www.cnblogs.com/langtianya/p/5139465.html
     * Throwable#addSuppressed()作用:通常在finally中出现异常不是我们需要关注点,当一个异常被抛出的时候,
     * 可能有其他异常因为该异常而被抑制住,从而无法正常抛出,此时可以通过Throwable#addSuppressed()
     * 方法将异常记录到堆栈中,通过getSuppressed方法来获取这些异常
     */
    @Test
    public void tryWithResourceTest(){
        try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
            System.out.println(inputStream.read());
        } catch (IOException e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }
    @Test
    public void tryCacheThrowTest(){
        try {
            FileInputStream inputStream = new FileInputStream(new File("test"));
            Throwable var2 = null;

            try {
                System.out.println(inputStream.read());
            } catch (Throwable var12) {
                var2 = var12;
                throw var12;
            } finally {
                if (inputStream != null) {
                    if (var2 != null) {
                        try {
                            inputStream.close();
                        } catch (Throwable var11) {
                            var2.addSuppressed(var11);
                        }
                    } else {
                        inputStream.close();
                    }
                }

            }

        } catch (IOException var14) {
            throw new RuntimeException(var14.getMessage(), var14);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值