Этот вопрос проверяет знание механизма обработки исключений и умение писать чистый и поддерживаемый код.
В Java можно обрабатывать несколько исключений с помощью нескольких catch блоков или одного catch с перечислением исключений через |. Это упрощает код и уменьшает дублирование логики обработки. Такой синтаксис появился в Java 7. Он применяется, если для разных исключений требуется одинаковая логика. При этом тип исключения в таком catch считается final.
Перед тем как выбрать подход, важно понимать, одинаково ли обрабатываются исключения.
catch блоковИспользуется, если логика обработки различается.
try {
// код, который может выбросить исключения
} catch (IOException e) {
// обработка IO-ошибки
} catch (SQLException e) {
// обработка ошибки БД
}
Особенности:
порядок важен
более конкретные исключения должны идти раньше
catch)Используется, если логика обработки одинакова.
try {
// код
} catch (IOException | SQLException e) {
// общая обработка
}
Ограничения:
исключения не должны быть в одной иерархии
переменная e является final
Разная реакция на ошибки → несколько catch
Одинаковая реакция → multi-catch
Multi-catch делает код компактнее и чище, но подходит не всегда. Выбор способа зависит от логики обработки ошибок.