Обработка исключений с Multi-Catch
Перехват нескольких типов исключений в одном блоке catch.
Сравнение кода
✕ Pre-Java 7
try {
process();
} catch (IOException e) {
log(e);
} catch (SQLException e) {
log(e);
} catch (ParseException e) {
log(e);
}
✓ Java 7+
try {
process();
} catch (IOException
| SQLException
| ParseException e) {
log(e);
}
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
DRY
Одна и та же логика обработки пишется один раз, а не трижды.
Повторный выброс
Пойманное исключение можно повторно выбросить с его точным типом.
Наглядность
Все обрабатываемые типы видны в одном месте.
Старый подход
Отдельные блоки catch
Современный подход
Multi-Catch
Начиная с JDK
7
Сложность
Начинающий
Поддержка JDK
Обработка исключений с Multi-Catch
Доступно
Доступно в JDK 7 (июль 2011)
Как это работает
Multi-Catch обрабатывает несколько типов исключений одним и тем же кодом. Переменная исключения является эффективно final, поэтому её можно повторно выбросить без оборачивания.
Связанная документация
Доказательство