java中try-with-resources自动关闭io流


try-with-resources 的理解

java中try-with-resources自动关闭io流

0 简要说明

在传统的输入输出流处理中,我们一般使用的结构如下所示,使用try - catch - finally结构捕获相关异常,最后不管是否有异常,我们都将流进行关闭处理。
try-with-resources 语句无法管理所有类。Java SE 7 引入了一个新接口 java.lang.AutoCloseable。它的作用就是提供一个名为 close() 的 void 方法,该方法可能抛出一个检查到的异常 (java.lang.Exception)。任何希望在 try-with-resources 语句中使用的类都应实现该接口。强烈建议,实现的类和子接口应声明一种比 java.lang.Exception 更精确的异常类型,当然,更好的情况是,如果调用 close() 方法不会导致失败,就根本不用声明异常类型。

此类 close() 方法已经进行了改进,包含在标准 Java SE 运行时环境的许多类中,这些类包括 java.io、java.nio、javax.crypto、java.security、java.util.zip、java.util.jar、javax.net 和 java.sql packages。这种方法的主要优点在于,现有代码可继续像以前那样工作,而新代码可以轻松利用 try-with-resources 语句。

  try {
   
           //业务代码
        } catch (SQLException e) {
   
            // 异常,数据回滚
            try {
   
                connection.rollback();
            } catch (SQLException ex) {
   
                log.error(ERROR_MSG, e);
                throw new IllegalArgumentException(e);
            }
            log.error(ERROR_MSG, e);
            throw new IllegalArgumentException(e);
        } finally {
   
            if (Objects.nonNull(preparedStatement)) {
   
                try {
   
                    preparedStatement.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值