java try 的用法_java try(){}catch(){}自动释放资源及用法
java语言中try(){}catch(){}的用法介绍。介绍了通常的try…catch的用法以及 try-with-resources 的用法。
1、try{} catch(){}的用法
通常try/catch模块的用法是:
try{
// statement here
}catch(Exception e){
// deal with the exception
}finally {
// release the resources
}
先执行语句,包括打开关闭文件流等,然后在finally模块里关闭数据流。
但是最近碰到这样一种用法
try (InputStream fis = new FileInputStream(source);
OutputStream fos = new FileOutputStream(target)){
byte[] buf = new byte[1024];
int i;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
}
catch (Exception e) {
e.printStackTrace();
}
这是一种 try-with-resources 的用法,称为 ARM (Automatic Resource Management) 自动资源管理。
2、try-with-resources的用法try(){}catch(){}
其基本语法是:
try(Resource resource = xxx) //可指定多个资源
{
//work with resource
}
其用法是:try(Resource resource = xxx)数据流xxx会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。
例如:
InputStream is = null;
OutputStream os = null;
try {
//...
} catch (IOException e) {
//...
}finally{
try {
if(os!=null){
os.close();
}
if(is!=null){
is.close();
}
} catch (IOException e2) {
//...
}
}
而用try-with-resources用法则简单的多:
try(
InputStream is = new FileInputStream("...");
OutputStream os = new FileOutputStream("...");
){
//...
}catch (IOException e) {
//...
}
其中的InputStream和OutputStream数据流会在try 执行完后自动关闭。一下简单多了。
java try 的用法_java try(){}catch(){}自动释放资源及用法相关推荐
- java 异常后重试_java – 异常后自动重试的功能
如果抛出一些异常,我已经使这个抽象类自动重试网络调用. >我在InterruptedException&之后注意不要重试 的UnknownHostException. >我重试了5 ...
- java中for的常规用法_Java for循环的几种用法详解
本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方 ...
- java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解
Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...
- java多线程百米赛跑_JAVA CountDownLatch(倒计时计数器)用法实例
这篇文章主要介绍了JAVA CountDownLatch(倒计时计数器)用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法说明: publ ...
- java 调用麦克风录音_Java 实现麦克风自动录音
最近在研究语音识别,使用百度的sdk.发现只有识别的部分,而我需要保存音频文件,并且实现当有声音传入时自动生成音频文件. 先上代码: public class EngineeCore { String ...
- java assert使用场景_Java线程池的四种用法与使用场景
一.如下方式存在的问题 new Thread() { @Override public void run() { // 业务逻辑 }}.start(); 1.首先频繁的创建.销毁对象是一个很消耗性能的 ...
- java中super关键字_java中super关键字有什么用法
Java中在执行子类的构造方法之前或者子类没有明确指定构造方法,会自动调用父类的无参构造方法. (视频教程推荐:java课程) super的三种使用情况: 访问父类方法中被覆盖的方法. 调用父类构造方 ...
- java request 封装对象_java通过request自动封装复杂对象
参考:Jfinal源码,在上面基础上改的,然后分享出来 适用JAVAEE平台 [Java]代码 /** * 实现深层封装对象的实例 从request封装对象 * 举例: * House.class 属 ...
- hashset java 键值对_Java集合 - HashSet的定义以及用法
HashSet的定义 HashSet类实现了Set接口,由一个实际上是HashMap实例的散列表支持.不能保证该集合的迭代次序,这意味着该类不能保证元素随时间的不变顺序.这个类允许null元素.该类 ...
最新文章
- XCode真机测试发布时产生The executable was signed with invalid entitlements.解决办法
- try()...catch()的用法
- 李开复预测:未来20年 AI将深刻影响五大产业
- 主流浏览器新版本将不再支持TLS 1.0/1.1
- iOS:切换视图的第三种方式:UITabBarController标签栏控制器
- jQuery选择器全集详解
- java EE 5配置邮件发送 qq企业邮箱
- 2019年春季学期第二周作业
- 【USACO】电子游戏 有条件的背包
- 查看UNIX/Linux资源占用的top命令
- XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
- QT每日一练day27:绘制不规则窗体
- android不同应用程序之间启动Activity
- jsfl读取xml,图片,并生成swf
- 2019券业IT投入突破200亿!国君华泰中信均超10亿,新评价标准下东财、平安、东方、安信、中泰加分最多
- 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
- 安卓饼状图设置软件_Android自定义控件实现饼状图
- 操作系统:进程同步与互斥之生产者-消费者问题(含报告和源码)
- 九鼎实际控制人投资观!
- SQL SERVER(32)Transact-SQL概述