Если main перекидывает (throws) исключения, получается их чуть-что никто не обработает?
dell
16 уровень
throws в методе main
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ArturExpert
23 ноября 2019, 17:38
Скорее всего, это исключение обработает сама виртуальная машина и закроет программу с выводом стектрейса в консоль..
Могу ошибаться. Если неправ - поправьте меня кто-нибудь плиз.
0
dell
23 ноября 2019, 17:45
ну разве можно сказать что jvm обработала, если программа стопорнулась?
0
dell
23 ноября 2019, 17:49
или эта и есть обработка от JVM: стейк-трейс + стопор?
0
Wladyslaw Java Developer Master
23 ноября 2019, 17:54
Смотря что понимать под словом обработать. Unchecked исключения по тому же принципу работают, например если вылезешь за границы массива - поведение будет таким же, оно проскочит через весь стек вызовов - и jvm тебе выведет стектрейс с причиной исключения.
Если говорить об Unchecked исключениях - их поведение определили так потому что считается что их не нужно обрабатывать - если они возникают то ты определенно делаешь что-то не так.
Хотя, возможность такая есть, например. Исполнение продолжится в таком случае.
Checked проигнорировать не выйдет - придется или в main его обработать или пробросить. То есть ты можешь это сделать только сознательно. А должно оно так быть или нет - это уже на твоей совести как программиста.
Например - если ты вылез за границы массива или пытаешься разименовать ссылку на нулл - программа написана неправильно. Если возникает FileNotFoundException, то программа может быть написана правильно, просто пользователь ввел что-то не то. Такая ситуация может возникнуть во время нормальной работы - ее нужно обработать. 0
dell
23 ноября 2019, 18:14
Ой мне кажется вы напутали. Не обрабатываются errors, потому что смысла нет, хотя технических возможно. Unchecked ещё как существует много ситуаций, когда нужно обрабатывать, а определили так (не обязали обрабатывать), потому что: трудно предсказать появление, либо легко, но получиться говно-код с try-catch для каждой мат. операции.
0
Wladyslaw Java Developer Master
23 ноября 2019, 20:06
Недостаточно четко выразился и слишком обобщил. Я о том что unchecked - это чаще всего ошибки программиста. Вылез за границы массива/списка, словил NPE или там модифицируешь коллекцию во время итерации. Это все значит что программа написана криво, нужно исправлять а не обрабатывать исключения. Checked же - вне компетенции программиста на момент написания программы. Какие-то из runtime может и могут иметь потенциальные сценарий для обработки, но я пока такого не видел, помимо какого-то там логирования. Но, безусловно я ещё не профи, в рабочих проектах не участвовал. Могу и ошибаться.
Вот тут об этом рассуждают, например
+1