Closeable

简介: Closeable java

JDK7之前
JDK7之前的版本在释放资源的时候,使用的try-catch-finally来操作资源。

其中,try代码块中使用获取、修改资源,catch捕捉资源操作异常,finally代码块来释放资源。

try {

fos = new FileOutputStream("test.txt");
dos = new DataOutputStream(fos);
dos.writeUTF("JDK7");

} catch (IOException e) {

// error处理

} finally {

fos.close();
dos.close();

}
问题来了,finally代码块中的fos.close()出现了异常,将会阻止dos.close()的调用,从而导致dos没有正确关闭而保持开放状态。

解决方法是把finally代码块中的两个fos和dos的关闭继续套在一个try-catch-finally代码块中。

FileOutputStream fos = null;
DataOutputStream dos = null;
try {

fos = new FileOutputStream("test.txt")
dos = new DataOutputStream(fos);
// 写一些功能

} catch (IOException e) {

// error处理

} finally {

try {
    fos.close();
    dos.close();
} catch (IOException e) {
    // log the exception
}

}

JDK7及之后
JDK7之后有了带资源的try-with-resource代码块,只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用该代码块来实现异常处理和资源关闭异常抛出顺序。

try(FileOutputStream fos = new FileOutputStream("test.txt")){

// 写一些功能

} catch(Exception e) {

// error处理

}
我们可以发现,在新版本的资源try-catch中,我们已经不需要对资源进行显示的释放,而且所有需要被关闭的资源都能被关闭。
需要注意的是,资源的close方法的调用顺序与它们的创建顺序是相反的。

目录
相关文章
|
SQL HIVE 负载均衡
Hive之数据倾斜的原因和解决方法
Hive之数据倾斜的原因和解决方法
9713 1
|
9天前
|
弹性计算 运维 网络安全
上云“加速器”——基于云效流水线快速上线企业门户网站
阿里云提出使用云效将项目代码部署到ECS,快速构建企业门户网站。该方案融合云原生技术和持续交付,通过云效流水线简化从开发到部署的全过程,实现快速迭代。文章详细阐述了技术架构,包括客户端、云解析DNS、VPC、ECS等组件,以及部署流程,包括准备阶段、部署网站服务、解析域名和可选的静态资源加速。此外,还介绍了如何使用云效平台创建流水线,实现自动化构建与部署,以及如何通过一键部署简化流程。整个方案旨在降低运维成本,提高速度和灵活性,同时提供域名备案和SSL证书配置的指导。
194430 71
上云“加速器”——基于云效流水线快速上线企业门户网站
|
9天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!
|
9天前
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
11天前
|
人工智能 机器人 API
用AppFlow玩转通义百炼大模型应用
阿里云百炼平台提供一站式大模型开发服务,支持创建和定制应用,预置丰富插件和API。用户可以通过平台快速构建大模型应用,并利用AppFlow将其接入钉钉群聊,以AI卡片形式展示。
72798 1
|
9天前
|
存储 网络协议 安全
阿里云hpc8ae实例商业化发布详解
近日,全球领先的云计算厂商阿里云宣布最新HPC优化实例hpc8ae的正式商业化,该实例依托阿里云自研的「飞天+CIPU」架构体系,搭载第四代AMD EPYC处理器,专为高性能计算应用优化,特别适用于计算流体、有限元分析、多物理场模拟等仿真类应用,CAE场景下的性价比最少提升50%。
|
10天前
|
SQL 搜索推荐 OLAP
Flink 流批一体场景应用及落地情况
本文由阿里云 Flink 团队苏轩楠老师撰写,旨在介绍 Flink 流批一体在几个常见场景下的应用。
67245 1
Flink 流批一体场景应用及落地情况
|
10天前
|
Kubernetes 测试技术 应用服务中间件
基于 Nginx Ingress + 云效 AppStack 实现灰度发布
本文将演示结合云效 AppStack,来看下如何在阿里云 ACK 集群上进行应用的 Ingress 灰度发布。
64472 16
|
11天前
|
机器学习/深度学习 Kubernetes 算法框架/工具
容器服务 ACK 大模型推理最佳实践系列一:TensorRT-LLM
在 ACK 中使用 KServe 部署 Triton+TensorRT-LLM
|
10天前
|
SQL 数据采集 DataWorks
DataWorks重磅推出全新资源组2.0,实现低成本灵活付费和动态平滑扩缩容
DataWorks资源组2.0上线,提供低成本、动态扩缩容的数据计算资源服务。
53557 4
DataWorks重磅推出全新资源组2.0,实现低成本灵活付费和动态平滑扩缩容