【发布时间】:2012-04-11 23:14:04
【问题描述】:
在使用 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();
}
}
}
【问题讨论】:
-
用例的好处是您在 try parens 中打开的资源会自动为您关闭,而无需在 finally 块中再次尝试捕获。此外,catch 块允许多个异常,因此您可以避免重复代码。
-
很像C#的using语句,如果你熟悉C#的话:msdn.microsoft.com/en-us/library/yh598w02.aspx
-
@HunterMcMillen 感谢 Hunter,这是一个非常清晰简洁的解释。我确实尝试用谷歌搜索它,但我不太确定用谷歌搜索什么,我没有意识到它可能是在 Java 7 中添加的,我只是假设它一直在那里,我只是不知道它.