以前使用try catch-finally都是捕获异常,然后流关闭等等,代码总是这样的:好比往FileOutputStream写东西:

@Testpublic void test2() throws IOException {File file = new File("E://test");if (!file.exists()) {file.createNewFile();}FileOutputStream fileOutputStream = new FileOutputStream(file);try {System.out.println("do something...");fileOutputStream.write("aaa".getBytes());fileOutputStream.flush();} catch (Exception e) {System.out.println("do ...");} finally {fileOutputStream.close();}}

这样写很难受,可以进行优化,将FileOutputStream fileOutputStream = new FileOutputStream(file)放到try()里面,也可以放多个,

  @Testpublic void test2() throws IOException {File file = new File("E://test");if (!file.exists()) {file.createNewFile();}try( FileOutputStream fileOutputStream = new FileOutputStream(file);) {System.out.println("do something...");fileOutputStream.write("aaa".getBytes());fileOutputStream.flush();} catch (Exception e) {System.out.println("do ...");} }

try()里每个声明的变量类型都必须是Closeable的子类,就一个close方法;相当于系统自动将关闭操作放到了finally里面而不需要我们自己写了,很nice;

try(){}的简单理解相关推荐

  1. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  2. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  3. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  4. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  5. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  6. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

  7. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区

    每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...

  8. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  9. QGraphicsScene 的简单理解--关于手册的简要翻译

    文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...

  10. QTextStream 的简单理解

    文章目录 QTextStream 的简单理解 QTextStream类提供了使用QIODevice读写文本的基本功能. 还有一种通常的用法就是控制台命令的读写 除了QTextStream的构造函数,还 ...

最新文章

  1. 5 个越早知道越好的 Python 特性
  2. 浏览器根据什么来判定脚本失控?
  3. oracle给换服务器,Oracle数据库更换服务器10分钟切换方案
  4. SAP中会计凭证和物料凭证的对应关系
  5. debian命令乱码_Debian 9.5 解决中文显示乱码
  6. Linux性能监测(系统监测统计命令详解)
  7. 谁说国产操作系统没救了? | 人物志
  8. Python学习1----在win系统中搭建Python编程环境
  9. 子类能不能继承父类的成员变量
  10. 什么是Windows Azure
  11. python调用WinRAR暴力获取压缩密码 用网址做解压密码
  12. java学习笔记(7)
  13. 关于超实数单子的说明
  14. 清华大学交叉信息研究院姚班修改培养模式:姚班、智班、量信班全合并
  15. Ubuntu命令下卸载软件
  16. 一、mongoDB window64 百度网盘资源下载,及安装教程
  17. word2010 标尺游标的微调
  18. #SORA#celery原生配置文件研究
  19. linux sigaction函数 sa_flags的值
  20. Android使用Shape实现简单的三角和圆形等

热门文章

  1. Moblin v2开发环境设置——创建一个新应用程序
  2. tracepro应用实例详解_腾讯云服务器计费模式包年包月、按量计费和竞价实例选择建议...
  3. word文件打开就是只读模式,怎么取消?
  4. 苹果11计算机怎么变成多用计算机,11英寸 苹果电脑11英寸是多大
  5. 关于网络安全行业你知道多少?
  6. re模块剩余和subprocess模块
  7. redis持久化机制,深入分析redisAOF和RDB模式的利弊
  8. 数组中a与a[0]的区别
  9. 笨鸟的平凡之路-记一次spark错误
  10. iphone上app store切换国家和地区