java try意义_新/陌生的Java“try()”语法?

新/陌生的Java“try()”语法?

在Eclipse中自定义格式化选项的时候,在一段代码示例中,我看到代码如下:

/** * 'try-with-resources' */ class Example { void foo() { try (FileReader reader1 = new FileReader("file1"); FileReader reader2 = new FileReader("file2")) { } } }

我从来没有见过这样的try ,我已经用Java编写了9年! 有没有人知道你为什么要这样做? 这样做有什么用处/好处?

我看到的其他代码片段,我认为是一个非常有用的简写,所以我也在这里分享它,这是非常明显的:

/** * 'multi-catch' */ class Example { void foo() { try { } catch (IllegalArgumentException | NullPointerException | ClassCastException e) { e.printStackTrace(); } } }

它是在Java 7中添加的。它被称为try-with-resources声明。

/编辑

不妨把它扔在这里。 如果你使用这样的包装类,你可以使用try-with-resources语句来pipe理Lock :

public class CloseableLock implements Closeable { private final Lock lock; private CloseableLock(Lock l) { lock = l; } public void close() { lock.unlock(); } public static CloseableLock lock(Lock l) { l.lock(); return new CloseableLock(l); } } try(CloseableLock l = CloseableLock.lock(lock)) { // acquire the lock // do something } // release the lock

但是,由于您必须为每个资源声明一个variables,因此这个优点是值得商榷的。

这是Java 7新的“试用资源”语句: http : //download.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html

这些是JDK7中引入的更改。

第一个陈述是一个尝试与资源。 我不知道它为什么存在,但exception往往是由inputstream等,我想这只是提高了可读性。 编辑:谢谢其他答案者,我读了javadoc,现在我知道它将closures实现AutoCloseable的所有I / Ostream,在很多情况下不需要finally块

其次是一个多重捕获,当你有不同的例外时,这个方法非常方便。

它被称为尝试与资源。 这是一种方法,以便不必自己清理,因为语言会为你做。

这是与资源尝试调用。 在尝试使用资源时,在try语句完成之后,资源部分中声明的任何types的可closuresstream都将被closures。 所以它几乎是一个

try{ InputStream is; //Stuff }finally{ is.close() }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值