Подтвердить что ты не робот

"Уловная ветка идентична", однако все же мне нужно ее поймать

Прочитав мой код, я заметил, что в моей среде IDE появилось предупреждение со следующим сообщением:

Сообщает идентичные разделы catch в блоках try в JDK 7. Для сглаживания разделов в секцию с несколькими лотками доступно быстрое решение.

И также указывает, что это предупреждение выдается для JDK 7 +

Блок try выглядит следующим образом:

try {
    FileInputStream e = new FileInputStream("outings.ser");
    ObjectInputStream inputStream = new ObjectInputStream(e);
    return (ArrayList)inputStream.readObject();
} catch (FileNotFoundException var3) {
    var3.printStackTrace();
} catch (ClassNotFoundException var5) {
    var5.printStackTrace();
} catch (IOException ex){
    ex.printStackTrace();
}

Однако при удалении (блоки catch, которые бросали это конкретное предупреждение):

catch (ClassNotFoundException var5) {
    var5.printStackTrace();
} catch (IOException ex){
    ex.printStackTrace();
}

Я все равно получаю ошибки:

ObjectInputStream inputStream = new ObjectInputStream(e);
return (ArrayList)inputStream.readObject();

Мне не хватает чего-то очевидного, что я до сих пор не понял?

4b9b3361

Ответ 1

Итак, поскольку я вижу такое же предупреждение в IntelliJ (и я думаю, что вы тоже используете IntelliJ), почему бы не позволить Alt + Enter (или Option + Return, если вы предпочитаете) показать, что это значит?

Вы можете свернуть ветки исключений, если они идентичны, и с синтаксисом с несколькими catch, вы завершите с одним оператором catch, который сделает то же самое, что и ваши три:

try {
    FileInputStream e = new FileInputStream("outings.ser");
    ObjectInputStream inputStream = new ObjectInputStream(e);
    return (ArrayList)inputStream.readObject();
} catch (ClassNotFoundException | IOException var3) {
    var3.printStackTrace();
}
return null;