Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зачем необходимо каждый раз при вызове метода, который бросает исключение, всегда нужно обрабатывать вызов с try/catch?

Retronik33 Профи (829), закрыт 1 год назад
Если убрать с байткода метода Exceptions атрибут, то прога запустится и при бросании исключения, он будет печатать стек трассировку и завершать прогу, что нормально.
Зачем это делать, если все за меня сделает JVM?
Лучший ответ
Реципиент Гений (83356) 1 год назад
Кому необходимо? Мне - нет. Есть масса способов пробросить исключение дальше и не морочить себе голову. Например, объявить его в сигнатуре своего метода:
 public void myBelovedMethod() throws StinkyException {
callSomeThrowingStuff(); // вызываем метод, бросающий StinkyException
}

Если этот вариант не подходит (руки связаны следованием кем-то другим заданному протоколу), то можно исключение поймать и переотбросить как RuntimeException, прицепив его туда.
 public void myBelovedMethod() {
try {
callSomeThrowingStuff(); // вызываем метод, бросающий StinkyException
} catch (Exception e) {
throw new RuntimeException(e);
}
}

Можно написать отдельный метод, принимающий функцию и упаковывающий её исключения.
Остальные ответы
Ranma Оракул (80479) 1 год назад
Чтобы обработать исключение не стандартно, а кастомнл, как тебе нужно.
Retronik33Профи (829) 1 год назад
А если я не хочу, потому-что это муторно?
Ranma Оракул (80479) Retronik33, тогда не делай.
Jurijus Zaksas Искусственный Интеллект (453922) 1 год назад
Это тебе решать, должно ли исключение быть критическим и завершать программу, или ты все же хочешь оставить пользователю возможность как-нибудь выкрутиться без того, чтобы всю программу перезапускать полностью.
Retronik33Профи (829) 1 год назад
Оставить пользователю возможность - это для моих полноценных общедоступных програм.
А не морочить себе голову, и не писать try/catch не для java.lang исключений - это для моих тестовых личных програм. Но Джеймс Гослинг не оставил такую возможность видимо, прийдется тратить время на написание try/catch.
Оракул Оракул (62664) 1 год назад
Не хотите try catch юзайте RuntimeException
Не хотите RuntimeException, юзайте @SneakyThrows из lombok
Похожие вопросы