Ответ
Да, обрабатывать можно, но нужно — только в тех местах, где вы можете осмысленно на них отреагировать и продолжить корректную работу.
Что такое unchecked-исключения? Это RuntimeException и его подклассы (например, NullPointerException, IllegalArgumentException, ArithmeticException). Компилятор не требует их объявления или обработки.
Когда обрабатывать:
- Когда вы можете восстановить нормальный поток выполнения (например, повторить операцию, использовать значение по умолчанию).
- Когда вы находитесь на границе слоев (например, в контроллере веб-приложения) и хотите преобразовать исключение в пользовательский ответ.
Пример осмысленной обработки:
public int safeParseInt(String input, int defaultValue) {
try {
return Integer.parseInt(input);
} catch (NumberFormatException e) { // unchecked исключение
// Мы можем осмысленно отреагировать — вернуть значение по умолчанию
logger.debug("Could not parse '{}', using default: {}", input, defaultValue);
return defaultValue;
}
}
Общая рекомендация: Не используйте catch (RuntimeException e) для "глушения" ошибок. Непроверяемые исключения часто указывают на баги в коде. На верхнем уровне приложения (например, в главном цикле или обработчике запросов) их стоит логировать и завершать текущую операцию.