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();

}

}

}

Ali asked 2020-01-27T06:46:43Z

8个解决方案

63 votes

它是在Java 7中添加的。它称为try-with-resources语句。

/编辑

最好也把它扔在这里。 如果使用以下包装器类,则可以使用try-with-resources语句来管理Locks:

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

但是,由于必须为每个资源声明一个变量,因此它的优点值得商de。

Jeffrey answered 2020-01-27T06:47:15Z

10 votes

这是Java 7新的try-with-resources语句:[http://download.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources.html]

Michael Schmeißer answered 2020-01-27T06:47:35Z

6 votes

这些是JDK7中引入的更改。

首先声明是一个try-with-resources。 我不知道它们为什么存在,但是异常通常是由输入流等引起的,我想这只会提高可读性。 编辑:感谢其他回答者,我阅读了javadoc,现在我知道它会关闭所有实现AutoCloseable的I / O流,在很多情况下都不需要finally块

第二个是多重捕获,当您以完全相同的方式处理不同的异常时,这非常方便。

MarioDS answered 2020-01-27T06:48:05Z

2 votes

称为尝试资源。 这是一种不必为自己打扫卫生的方法,因为该语言将为您做到。

kasavbere answered 2020-01-27T06:48:25Z

1 votes

它是在Java 7中添加的。称为资源尝试。 尝试使用资源语句功能是在Java 7版本中引入的。 尝试使用资源语句是一种声明一个或多个语句的try语句。 资源是程序完成后必须关闭的对象。

在Java 7之前,我们使用finally块关闭程序中已使用的资源。 在finally块中,我们必须手动关闭程序中已使用的所有资源。有关更多信息,您可以访问试试看资源

Aakash Garg answered 2020-01-27T06:48:50Z

1 votes

与C Sharp中的using(Resource)用法相同,这意味着当您的程序离开此代码块后,此资源将被自动回收。

try-with-resources语句可确保在语句末尾关闭每个资源。 任何实现java.lang.AutoCloseable的对象(包括所有实现java.io.Closeable的对象)都可以用作资源

资源尝试声明

Chopping answered 2020-01-27T06:49:19Z

0 votes

尝试使用资源进行调用。 在尝试使用资源时,在try语句完成后,将关闭在资源部分中声明的任何类型的可关闭流。 所以这几乎是一个

try{

InputStream is;

//Stuff

}finally{

is.close()

}

Shawn Shroyer answered 2020-01-27T06:49:39Z

0 votes

try-with-resources语句是一个try语句,用于声明一个或多个资源。 资源是程序完成后必须关闭的对象。 try-with-resources语句可确保在语句末尾关闭每个资源。 任何实现java.lang.AutoCloseable的对象(包括所有实现java.io.Closeable的对象)都可以用作资源。

Nada Touil answered 2020-01-27T06:50:00Z

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值