java try(){}catch(){}自动资源释放

从Java7 build 105版本起,引入了try-with-resources语句,即ARM块,用于自动资源管理。该特性允许在try语句中声明可关闭资源,如文件流,在try块执行完毕后会自动关闭这些资源,前提是资源实现了AutoCloseable接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。

使用try(){}catch(){}效果:

private static void customBufferStreamCopy(File source, File target) {
    try (InputStream fis = new FileInputStream(source);
        OutputStream fos = new FileOutputStream(target)){
  
        byte[] buf = new byte[8192];
  
        int i;
        while ((i = fis.read(buf)) != -1) {
            fos.write(buf, 0, i);
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}

在这个例子中,数据流会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口

本文转载自:https://www.cnblogs.com/zhoujl-5071/p/6006976.html

### Java 中 `try-catch` 的用法 在 Java 编程语言中,异常处理机制用于管理程序执行期间可能出现的错误条件。`try-catch` 结构允许开发者捕获并响应这些异常情况。 #### 基本结构 基本形式由两个主要部分组成: - **Try 块**: 定义了一段可能抛出异常的代码区域。 - **Catch 块**: 提供了一个或多个处理器来应对特定类型的异常事件。 当尝试执行 try 内部的操作失败时,会触发相应的 catch 子句来进行后续处理[^1]。 ```java try { // 可能引发异常的代码片段 } catch (SpecificException e) { // 处理 SpecificException 类型的异常逻辑 } ``` #### 使用 Try-With-Resources 自动关闭资源 对于涉及 I/O 或数据库连接等需要显式释放外部资源的情况,可以采用增强版语法——即带有资源声明的 try 语句 (`try-with-resources`) 来简化操作流程。这种方式确保即使发生未预期状况也能安全地清理所占用的对象实例。 ```java // 创建具有自动关闭功能的数据源链接对象 try (Connection conn = DriverManager.getConnection(url, user, password)) { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sqlQuery); while(rs.next()){ System.out.println("Result: " + rs.getString(1)); } } catch(SQLException ex){ Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex); } ``` 此例子展示了如何利用 try-with-resources 特性,在 SQL 查询完成后自动断开与数据库服务器之间的通信链路而无需手动调用 close 方法。 #### 错误恢复策略 除了简单记录日志之外,catch 部分还可以包含其他业务逻辑以实现更加复杂的错误恢复方案;比如回滚事务、重试请求或是通知管理员等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值