Давайте рассмотрим правильное решение, предоставленное в задаче.
Если брать пример из лекции применительно к задаче:
Первый вариант: С первым вариантом все понятно, там нормальный, понятный относительный путь "projects\\note.txt".
Второй вариант: Во втором варианте тоже нормальный относительный путь "..\\..", просто так сказать "обратный", и его задача тоже принимает за нормальный ответ.
Третий вариант: Третий вариант, когда корни путей разные, как раз таки и понимается в условиях под " В противном случае выводить ничего не нужно".
Для этого сделан блок try, если в путях разные корни, то метод relativize выкинет исключение и в этом случае не надо ничего выводить, с этим тоже все понятно...
Но для чего делать второй блок try и в нем менять местами пути? Ведь корни то все равно останутся разными, и выкинет то же самое исключение.
Или я недопонял?
Jer0me
32 уровень
Не понимаю для чего второй блок try
Обсуждается
Комментарии (22)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр Работает в безработный
24 апреля 2021, 12:15
Я когда решал эту задачу , тоже решил с одним try и руководствуясь подсказкой
просто использовал if и всё отлично работало ., ломал голову почему не проходит . В конце концов после просмотра раздела помощи по этой задаче я открыл правильное решение и тоже не понял на фига вся эта горотьба , если в путях разные директории сработает catch и всё . В этом же коде
если директории совпадают этот вывод
не выполнится никогда , будет всегда выводиться первый вариант. +1
Jer0me
24 апреля 2021, 12:35
Я сначала думал, что нужен относительный путь как в первом варианте, тоже упражнялся с if-ами, но валидатор не принимал... Когда подсмотрел правильный вариант и ответы по вопросам, понял, что по условиям задачи сойдет и второй вариант. Но вот сам правильный ответ остался непонятым...
0
hidden #2322530
24 апреля 2021, 12:12
насколько я помню в этой задаче надо потому что пробовать или одно относительно другого, или наоборот.
вот для "наоборот" и нужен второй try
0
Jer0me
24 апреля 2021, 12:32
Так в том то и дело, что этот наоборот никогда не выполнится.
0
hidden #2322530
24 апреля 2021, 12:36
почему ты так решил? )
-2
Jer0me
24 апреля 2021, 12:51
Если корни у директорий разные, то оба блока try выкинут исключение, а если одинаковые, то сработает первый блок, и до второго, где "наоборот", дело все равно не дойдет.
0
Александр Работает в безработный
24 апреля 2021, 12:55
Если сделать так
всегда будет выводиться при одинаковых директориях и ведённых то тек , то подругому всегда будет срабатывать только это
0
hidden #2322530
24 апреля 2021, 12:56
@Jer0me
ты видимо не совсем понимаешь что от тебя хотят.
всё верно. но "наоборот" как раз есть второй try.
наоборот это не значит что условие должно выполнится и на экран что-то выброситься. наоборот, это ситуация, которую надо отработать.
а чтобы программа не легла с ошибкой, и делают try / catch.
0
hidden #2322530
24 апреля 2021, 12:58
@Александр
условие задачи и требования какие? можете сюда скинуть, а то у меня к ним доступа нет.
0
Александр Работает в безработный
24 апреля 2021, 13:00
0
hidden #2322530
24 апреля 2021, 13:05
@Александр
и что вам не нравится согласно этому условию в "правильном решении" ?
ситуация с двумя try / catch отлично сюда подходит.
0
Александр Работает в безработный
24 апреля 2021, 13:12
Мне не нравится , что вывод в консоль во втором блоке не выполнится ни когда.
0
hidden #2322530
24 апреля 2021, 13:17
какой именно вывод?
вот этот?
так он может и не должен выводиться, но ситуацию проверить надо. например там возможно будет не вывод на консоль, а логирование.
на EE вообще всё логируется ,а не на консоль выводится.
а весь курс JR в больше степени на EE направлен. просто не будут же каждого обучать с 1го уровня легированию и тд. в консоль оно проще.
0
Александр Работает в безработный
24 апреля 2021, 13:26
а с одним блоком и с помощью иф выводить разные варианты и если возникнет исключение , разве логирование не то же самое будет?
0
hidden #2322530
24 апреля 2021, 13:30
не то же самое
0
Александр Работает в безработный
24 апреля 2021, 13:37
Понятно , чтобы до конца разобраться попробую применить логирование в этой задаче .
Спасибо , что прояснил ситуацию , оказывается ни у меня одного непонятки с этой задачей были.
0
hidden #2322530
24 апреля 2021, 13:41
на *nix подобных системах второй try не отработает конечно, потому что всё что относится к файловой системе так или иначе подключено к корню. и всё относительно корня.
но в винде возможно прокатит. обычная типовая задача на то, что не пригодится. не более.
0
Александр Работает в безработный
24 апреля 2021, 13:44
по идее можно было обойтись таким кодом , если без разницы в каком виде выведется относительный путь( а в правильном решении так оно и есть)
0
hidden #2322530
24 апреля 2021, 13:49
это надо спрашивать у создателей условий и тестов. что они там в своих головах придумывали.
0
Александр Работает в безработный
24 апреля 2021, 13:50
это точно , хотя в винде тоже может быть одна директория , хотя это редкость.
0
Jer0me
24 апреля 2021, 14:47
Дело в том, что про логирование на данном этапе обучения никто еще и не слышал, по эту такая логика в задаче вряд ли продумывалась!
+1
hidden #2322530
24 апреля 2021, 15:00
дело в том, что когда тебе в детстве говорят это хорошо, а это плохо. никто не говорит тебе о том, что это будет хорошо или плохо через 30 лет. просто говорят и ты это воспринимаешь как данность.
здесь же тебе не 5 лет, и ты своей головой должен думать. шире чем тебе кажется.
а то в разделе помощь постоянно вижу.
"ну у меня же вывод такой как в условии", а то что задача не работает, никого не интересует, что вариантов входных данных может быть не 1 (как в условии), а 31. и все разные.
0