java try catch块的特殊语法

时间:2012-03-06 10:43:19

标签: java try-catch

Charset charset = Charset.forName("US-ASCII");
try (BufferedReader reader = Files.newBufferedReader(file, charset)) {
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException x) {
    System.err.format("IOException: %s%n", x);
}

我在The Java Tutorials上看到了这样一段代码,其中括号声明位于关键字'try'之后。这有效吗?为什么不能eclipse识别它并报告语法错误?

4 个答案:

答案 0 :(得分:2)

这是Java 7的try with resource功能。

您需要将Eclipse的编译器合规性级别设置为1.7才能识别语法。

您可以在Window > Preferences > Java > Compiler下全局设置,也可以只需右键单击项目,然后执行以下操作:

enter image description here

答案 1 :(得分:1)

这是Java 7中引入的try-with-resource语法。它是supported by Eclise,这就是它没有报告任何错误的原因:

Eclipse

顺便说一句,您的代码也使用了Java 7中引入的Files

答案 2 :(得分:1)

Eclipse清楚地表明了为什么这不是有效的语法:

  

将项目编译器合规性设置设置为1.7

     

将项目JRE构建路径条目设置为“JavaSE-1.7”

这意味着,您已安装Java 6,但教程

  

(...)主要描述Java SE 7中的功能。

http://docs.oracle.com/javase/tutorial/index.html

答案 3 :(得分:0)

不,它无效。试试这个:

Charset charset = Charset.forName("US-ASCII");
try {
    BufferedReader reader = Files.newBufferedReader(file, charset);
    String line = null;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException x) {
    System.err.format("IOException: %s%n", x);
}