Отдебажим все на свете

  • 18
  • Недоступна
Разобраться, что делает программа. Почитать про UncaughtExceptionHandler - это важно. Еще раз внимательно посмотреть программу. Разобраться - продебажить - почему наш OurUncaughtExceptionHandler не срабатывает. Исправить ошибку, т.е. все должно работать. :) Ожидаемый результат в произвольном порядк
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (374)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Павел
Уровень 23, Stavropol, Russian Federation
23 июня, 16:26
https://neerc.ifmo.ru/wiki/index.php?title=Обработка_ошибок_и_исключения
Lyokha Blagodatskikh
Уровень 24, Ural, Russian Federation
23 июня, 05:55
Сложнооо... чуть депрессию не словил пока решал )
Ilia lenskii
Уровень 19, Санкт-Петербург
19 июня, 19:27
Это важное задание, поскольку оно учит красиво ловить и обрабатывать ошибки исполнения в потоках. Спасибо.
Дмитрий
Уровень 32, Тверь, Russian Federation
16 июня, 12:10
7 символов в слово добавил и заработало. Ниче не понятно, но очень интересно)
Buenos
Уровень 34, Минск, Беларусь
20 мая, 13:57
Что-то сделал -> что-то произошло... Магия!)))
milyasow
Уровень 30, Москва, Russian Federation
18 мая, 21:25
Установил брейкпойнт на строку с выкидыванием RuntimeException, и дебагом походил по вызываемым методам. Подозрения вызвал вот этот метод в классе Thread.java:
public UncaughtExceptionHandler getUncaughtExceptionHandler() {
        return uncaughtExceptionHandler != null ?    //  uncaughtExceptionHandler = null
            uncaughtExceptionHandler : group;
    }
где значение uncaughtExceptionHandler показывалось как раз null. Понятно, значит uncaughtException нам здесь обрабатывать некому. На каждую нить не догадался установить, сделал проще, в конструкторе TestedThread строку установки handler'a изменил на:
setDefaultUncaughtExceptionHandler(handler);
Это устанавливает обработчик по умолчанию, и позволяет threadA и threadB обрабатывать UncaughtException'ы, выводя нужный текст в консоль.
Антон Черняк
Уровень 29, Москва, Russian Federation
29 апреля, 09:26
честно говоря я не совсем самостоятельно разобрался с решением этой задачи. но стало интересно почему из конструктора класса метод не работает. не особо понял почему. но если по умолчанию включить этот перехватчик в конструкторе класса все работает, хоть и не принимает валидатор. UPD почитал коменты и наконец до меня дошло. но по умолчанию валидатор не принимает как ни крути
Skipper;Mouse
Уровень 35, Минск, Belarus
22 апреля, 13:36
Крайне интересная задача. Разбирался часа полтора. Решил другим способом, валидатор принял. Способ описан здесь. https://medium.com Ссылка правда на английском. Но расписано понятней чем на русских сайтах, которые я просмотрел. Решил не совсем правильно, но это помогло разобраться.
SWK
Уровень 16
24 марта, 08:37
Почитал условие. Почитал тырнет. Много думал. Почитал код. Решил буква в букву, как в ответе. Нифига не понял. Не в смысле не понял решения, в смысле не понял, зачем было это всё? Чему меня предполагалось научить? Есть гипотеза: научить предполагалось тому, что конструктор нити на основе runnable объекта метод run() перенимает, а обработчик необрабатываемого исключения - нет. Но, во-первых, я в этом не уверен, а, во-вторых, что-то мне подсказывает, что большинство решивших не обратило на это внимание.
Nikolay Myasnikov
Уровень 28, Екатеринбург, Russian Federation
24 марта, 05:39
Нужно добраться до комментария к задаче от Sergey, датируемого от 13 августа 2020. Там всё расписано "от" и "до" - просто по царски размикрил!) Об этом еще Виктор писал в комментарии от 17 января 2021.
Павел
Уровень 22, Новосибирск, Россия
29 марта, 18:30
Спасибо Сергею и этому комменту!