Задачки на вывод StackTrace
Комментарии (430)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #3197665Expert
19 июля 2023, 16:13
Здравствуйте подскажите пожалуйста где можно дополнительную статью или материл ??? по этой теме .
+2
Дмитрий Андреев
20 декабря 2022, 17:19
Недопонимание предпоследней задачи, хотя методом тыка решил ее.
Не могу понять, почему в задаче "Стек-трейс длиной 10 вызовов"
method1().length - 12, а method10().length - 3 в исправленном состоянии. По дебагеру массивы StackTraceElement[ ] в method1() - 3 элемента, в method10() - 12 элементов. Возвращают же эти методы массивы содержащие размер цепочки до метода из которого мы вызываем? А length возвращает длину переданных массивов. Но все проходит наоборот!
Вообще, если в method10() вызвать sout - Thread.currentThread().getStackTrace().length, то получается такая картина
12
3
12
3
То есть длина массива StackTraceElement[ ] в методе меняется несколько раз.
Что за хрень? Блин уже мозги кипят.
+1
Василий
17 марта 2023, 12:57
Разобрал это в обсуждении к задаче. Если у кого-то еще есть непонимание - жмите кнопку обсуждение в задаче, там постарался расписать.
0
Денис Александрович
6 декабря 2022, 17:27
Где я что пропустил, в какой предыдущей лекции, что не угадал про [2]? Thread.currentThread().getStackTrace()[2].getMethodName();
0
DmitryStudent в Home
8 декабря 2022, 09:07
да нигде этого не было. В наших задачах получается:
0 - это гетМетодНейм
1- это название самого этого метода где выполняется код
2- это название метода который вызывает наш метод, где выполняется код
+7
LoExpert
8 июля 2023, 13:28
Вот спасибо умный человек! Читала доп материал к этой лекции, но про вызов по индексу что-то не нашла пока, почитаю еще))
0
YesOn
24 сентября 2022, 23:26
Да, задачи деревянные, неожиданно.
+2
Fat.Lilliput
9 июля 2022, 13:32
Лучше теоретическую часть в серии Java Syntax Pro посмотреть, а не в Java Syntax New, там хоть описание методов StackTraceElement есть https://javarush.com/quests/lectures/questsyntaxpro.level14.lecture05
+17
Евгений N
18 апреля 2022, 20:40
имхо, задачи 1-2 бесполезны, лучше сразу в ответ идти, 3-4 можно поугадывать минут 5.
в последней задаче после доработки log не поленитесь добавить метод
и его вызов из main. так более понятно зачем нужен метод log и как оно работает.
+2
КириллBackend Developer в Dats.team
16 декабря 2021, 06:39
Господа будущие разработчики, кто не до конца понял как работает стек трейс и сделал задачи "методом тыка" - попробуйте сделать нормальный вывод стека в консоль и посмотреть что в нём лежит в каждом методе. Жизнь сразу станет проще.
+11
tararabumbia
10 декабря 2021, 16:48
задачки решаемы, но без понятия как работают исключения, стек как-будто бесполезен. Лучше перед этой темой нормальную теорию в книжках по jave почитать
+2
Ivan
25 февраля 2022, 12:26
это тут почти каждой темы касается...
0
Anonymous #2902741
25 ноября 2021, 16:41
Все сделал с первого раза, но что именно я делал и как оно получилось так и не понял
Чисто задачки на копипасту
+2
Anonymous #2743933
22 ноября 2021, 03:44
Я наверно один недалекий))). JavaRush дает три строчки теории и потом в задачах появляется требование знать материал, которого еще не было в лекциях. Например во второй задаче в решении есть "getStackTrace()[2]". Вопрос: где в теоретической части изложено, что можно обращаться таким образом. Почему именно [2], а не [1] или [0]?
+10
Булат
19 января 2022, 10:32
Да это жестко, где-то на javarush было написано, что тут не вся инфа.
JavaRush нужно совмещать с чем-нибудь, например какую нибудь книжку найти проходить темы, а практиковаться здесь(ибо в книгах редко есть практические задачи)
0
FuryCydonian
29 января 2022, 15:23
ну собственно потому что все и не должно быть таким, чтоб только копипастом делать можно было. Надо гуглить, думать, а вы что хотели) И необязательно какие-то еще книжки читать на самом деле. На самом же ресурсе здесь часто есть дополнительные статьи на все темы. Или на другом ресурсе. Прям книги книги на таком этапе в общем-то и не так уж надо читать параллельно. То есть надо, если хотите сразу идти степенно и глубоко настолько насколько можно, а если быстрее, то легче самому пробовать, играться, так сказать. Надо было вывести стектрейс в консоль в IDE, или тут в браузере это сделать. Посомтреть, что такое стектрейс, взятый таким методом, как там написано, и что можно с этим сделать. Не всегда должно быть легко и просто все. Это создает иллюзию, что ты все знаешь и все получается, а это не так. Надо часто самому тыкать и смотреть высматривать, что такое где. Команда System.out.println() должна быть вызвана всегда в процессе решения если что-то непонятно и вообще помотреть что происходит. Или отладкой пользоваться смотреть. Ну в самом деле. Ничего сверхсложного, просто не все гладенько))
+8
АртемРаботает в IT Universe
1 февраля 2022, 14:53
Как я понял - getStackTrace() - это массив, который является стеком, т.е. каждый элемент в нем - это тот метод который идет в иерархии вызовов (пример для метода method1()):
getStackTrace()[2].getMethodName() - это main;
getStackTrace()[1].getMethodName() - это method1;
getStackTrace()[0].getMethodName() - это getStackTrace;
getStackTrace()[3].getMethodName() - выше main ничего нет, поэтому получите ArrayIndexOutOfBoundsException, массив то из 3 элементов.
Для методе method2() будет такой:
getStackTrace
method5
method4
method3
method2
method1
main
Итого getStackTrace()[2].getMethodName() - потому что именно в третьем элементе лежит вызвавший текущий метод метод. Во втором - текущий метод, в первом - метод getStackTrace.
+4
Valkery
12 февраля 2022, 09:25
Насчет надо гуглить - двоякое мнение, знаете, я покупаю книгу, чтобы по ней изучать информацию, зачем тогда гуглить, если есть хорошая книга. JR позиционирует себя как хороший сервис для будущего разраба, так я купила его(для получения знаний), почему не навалить здесь же информации и не выдавать ее студентам
+8
FuryCydonian
14 февраля 2022, 16:58
Двоякое-то двоякое, да только в жизни так не бывает, наверное, что в одном месте все так идеально собрано и всем подходит. Тут есть куча статей, да. Можно их тут же и искать, но они точно также ищутся и через гугл (статьи с джавараш). И в конце уровней даются доп лекции. Но все равно всегда и все люди говорят умные, что надо несколько источников обрабатывать. Почему еще что-то покупать или брать? Потому. Потому что инфа представляется разными словами и разными людьми и кому что больше зайдет - не угадаешь. Здесь тоже ссылок полно разных полезных дают, но как бы при это и урок есть с рекомендациями хороших книг и наставлениями не оставаться только на JR.
А умение гуглить это, как шутят, вообще главное умение. Это просто нужно уметь делать, и чем раньше привыкнуть - тем лучше. Бубнеть, что зачем еще что-то, я же то-то купил и то-то купил - толку не принесет, к сожалению.
Вообще единственное место, где как раз все навалено и все есть, надо только поискать - это как раз таки интернет. Вот в нем все навалено. Именно навалено. Здесь стараются и давать что-то, чтоб вроде понятно было, но и не заваливать прям. Но источники другие хорошие здесь тоже навалены, как вы говорите, и все - идите смотрите там, если там понятнее, дополнительно - не проблема. Разные люди - разные способы объяснения нужны всем) Почитать что-то другими словами или посмотреть - это лучшее усвоение материала, так что вредным все равно не будет. А самое лучшее и полное руководство, где все есть, но читать его как книжку или курс тяжеловато и скучно, это оф руководство, конечно. Там есть все. Но учиться по нему сложновато)
+4
Артем
1 марта 2022, 10:10
наверное правильнее сказать getStackTrace() это метод, который возвращает массив объектов, у которых есть методы...
+2
Zhulien
14 июня 2022, 20:05
работа программиста а 80% состоит из правильного ввода запроса в гугл))) привыкайте
+2
Кирилл
1 декабря 2022, 14:26
У них на сайте (помимо курса) овердох.. крутейших и понятных статей. При этом они понимают, что лучшие знания и навыки нарабатываются на практике, а запоминается лишь то, что пощелкал, попробовал, где упёрся, где пришлось поискать, подумать. Остальное - вылетает ко всем чертям. Важнейший навык, который вырабатывет подход JR - навык самостоятельного обучения. Обычно он должен вырабатываться в универе, но не у всех вырабатывается. И вот тут как раз JR отлично работает.
И опять таки, работая в индустрии придется производить собственные смыслы, собственные реализации, основываясь на том, что нашел и собрал по крупицам в интернете. не для каждой практической задачи найдется подробная технологическая карта. Нет как бы в программировании такого, что уже всё создано до нас, а нам надо только все выучить и повторять в нужном порядке. Иначе у прогеров не было бы таких хороших зарплат. И вот чтобы научиться не теряться в океане, в который попадаешь, став разрабом, JR и использует именно эти модели в подходе к обучению.
0
Виктор Виноградов
9 декабря 2022, 03:28
Ты просто себе представить не можешь что будет дальше .
0