此语言级别不支持多次捕获

时间:2014-03-12 21:05:06

标签: java exception-handling hashmap

所以我想输入一个数字,然后输入一个人或其他人的名字。这没有问题,但为什么我不能在1个块中放置2个错误异常?

while (true) {
    try {
        int id = Integer.parseInt( reader.readLine() );
        String name = reader.readLine();

        if (name.equals("")) {
            break;
        }

        map.put(name, id);
    } catch (NumberFormatException | IOException e) {
        break;
    }
}

当我试图打印我的价值时,我得到NumberFormatException

for (Map.Entry<Integer, String> pair: map.entrySet()) {
    int id = pair.getKey();
    String name = pair.getValue();
    System.out.println(id + " " + name);
}

3 个答案:

答案 0 :(得分:20)

问题不在代码中,而是在编译器级别。只需检查IDE设置并将编译器级别设置为1.7或更高。

答案 1 :(得分:7)

如果您正在使用IntelliJ并在以下路径中将其正确设置为7.0,但仍无效:

  

档案 - &gt;项目结构 - &gt;项目设置 - &gt;项目 - &gt;项目语言水平

在模块中设置:

  

档案 - &gt;项目结构 - &gt;项目设置 - &gt; 模块 - &gt; 项目语言水平

答案 2 :(得分:4)

就我而言,我pom.xml中的显式配置可以解决这个问题。 文件中的IntelliJ设置 - &gt;项目结构 - &gt;项目 - &gt;项目语言级别设置为我的JDK 1.7,但IDE忽略了设置。

我使用Maven编译器插件将源版本和目标版本指定为1.7

为此,请在<plugins>部分添加以下行:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>