Множественные уловы не поддерживаются этим языковым уровнем

Итак, я хочу ввести число, а затем имя человека или что-то еще. Нет проблем с этим, но почему я не могу поставить 2 исключения ошибок в 1 блок?

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

Ответ 1

Проблема не в коде, а на уровне компилятора. Просто проверьте настройки IDE и установите уровень компилятора в 1.7 или выше.

Ответ 2

Если вы используете IntelliJ и правильно установите его на 7.0 по следующему пути и все еще не сработали:

Файл → Структура проекта → Настройки проекта → Проект → Уровень языка проекта

Установите в модуле:

Файл → Структура проекта → Настройки проекта → Модули Уровень языка проекта

Ответ 3

В моем случае явная конфигурация в моем pom.xml сделала трюк. Параметр IntelliJ в меню Файл → Структура проекта → Проект → Уровень языка проекта был установлен на мой JDK 1.7, но среда ID игнорировала эту настройку.

Я использовал Maven Compiler Plugin для указания исходной и целевой версии как 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>