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(){}自动释放资源及用法相关推荐

  1. java 异常后重试_java – 异常后自动重试的功能

    如果抛出一些异常,我已经使这个抽象类自动重试网络调用. >我在InterruptedException&之后注意不要重试 的UnknownHostException. >我重试了5 ...

  2. java中for的常规用法_Java for循环的几种用法详解

    本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方 ...

  3. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

  4. java多线程百米赛跑_JAVA CountDownLatch(倒计时计数器)用法实例

    这篇文章主要介绍了JAVA CountDownLatch(倒计时计数器)用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 方法说明: publ ...

  5. java 调用麦克风录音_Java 实现麦克风自动录音

    最近在研究语音识别,使用百度的sdk.发现只有识别的部分,而我需要保存音频文件,并且实现当有声音传入时自动生成音频文件. 先上代码: public class EngineeCore { String ...

  6. java assert使用场景_Java线程池的四种用法与使用场景

    一.如下方式存在的问题 new Thread() { @Override public void run() { // 业务逻辑 }}.start(); 1.首先频繁的创建.销毁对象是一个很消耗性能的 ...

  7. java中super关键字_java中super关键字有什么用法

    Java中在执行子类的构造方法之前或者子类没有明确指定构造方法,会自动调用父类的无参构造方法. (视频教程推荐:java课程) super的三种使用情况: 访问父类方法中被覆盖的方法. 调用父类构造方 ...

  8. java request 封装对象_java通过request自动封装复杂对象

    参考:Jfinal源码,在上面基础上改的,然后分享出来 适用JAVAEE平台 [Java]代码 /** * 实现深层封装对象的实例 从request封装对象 * 举例: * House.class 属 ...

  9. hashset java 键值对_Java集合 - HashSet的定义以及用法

    HashSet的定义 HashSet类实现了Set接口,由一个实际上是HashMap实例的散列表​支持.不能保证该集合的迭代次序,这意味着该类不能保证元素随时间的不变顺序.这个类允许null元素.该类 ...

最新文章

  1. XCode真机测试发布时产生The executable was signed with invalid entitlements.解决办法
  2. try()...catch()的用法
  3. 李开复预测:未来20年 AI将深刻影响五大产业
  4. 主流浏览器新版本将不再支持TLS 1.0/1.1
  5. iOS:切换视图的第三种方式:UITabBarController标签栏控制器
  6. jQuery选择器全集详解
  7. java EE 5配置邮件发送 qq企业邮箱
  8. 2019年春季学期第二周作业
  9. 【USACO】电子游戏 有条件的背包
  10. 查看UNIX/Linux资源占用的top命令
  11. XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
  12. QT每日一练day27:绘制不规则窗体
  13. android不同应用程序之间启动Activity
  14. jsfl读取xml,图片,并生成swf
  15. 2019券业IT投入突破200亿!国君华泰中信均超10亿,新评价标准下东财、平安、东方、安信、中泰加分最多
  16. 【NLP】揭秘马尔可夫模型神秘面纱系列文章(一)
  17. 安卓饼状图设置软件_Android自定义控件实现饼状图
  18. 操作系统:进程同步与互斥之生产者-消费者问题(含报告和源码)
  19. 九鼎实际控制人投资观!
  20. SQL SERVER(32)Transact-SQL概述

热门文章

  1. 使用FB41进行PID调整的说明
  2. 使用redis-cli命令客户端远程连接redis数据库
  3. Git 的 revert 命令撤销多次提交
  4. 【手把手教你】Ichimoku云图指标可视化与交易策略回测
  5. 新版TCGA的甲基化数据分析
  6. 硬核 阿里P8终于把(数据结构与算法经典问题解析)讲全了
  7. 用Python做中文分词和绘制词云图
  8. LCG(线性同余生成器)
  9. 专用神经网络处理器芯片,嵌入式神经网络处理器
  10. 2019年中国游戏市场