JavaRush /Курсы /Java Multithreading /Задачи на получение ошибок из нити

Задачи на получение ошибок из нити

Java Multithreading
5 уровень , 9 лекция
Открыта
Задачи на получение ошибок из нити - 1

— А чего это у тебя все время аж по 3 задачи?

Как насчет решить еще 50?

— 50? О_о

— Давай лучше 3 как обычно.

14
Задача
Java Multithreading, 5 уровень, 9 лекция
Недоступна
Поживем - увидим
Все исключения, которые возникают в процессе работы нити Solution, должны быть обработаны одним из вариантов: 1. Если это Error, то вывести в консоль "Нельзя дальше работать". 2. Если это Exception, то вывести в консоль "Надо обработать". 3. Если это Throwable, то вывести в консоль "Поживем - увидим".
14
Задача
Java Multithreading, 5 уровень, 9 лекция
Недоступна
Вооружаемся до зубов!
Создай свой UncaughtExceptionHandler в виде локального класса внутри конструктора. UncaughtExceptionHandler должен маскировать звездочками имя трэда и выводить в консоль описание возникшей ошибки. "Thread-0" должно быть заменено на "********". "Thread-4321" должно быть заменено на "***********".
14
Задача
Java Multithreading, 5 уровень, 9 лекция
Недоступна
Живем своим умом
В классе Solution реализуй интерфейс UncaughtExceptionHandler, который должен: 1. прервать нить, которая бросила исключение. 2. вывести в консоль стек исключений, начиная с самого вложенного. Пример исключения: new Exception("ABC", new RuntimeException("DEF", new IllegalAccessException("GHI"))) Прим
Комментарии (85)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Victor Уровень 39
13 ноября 2025
Вооружаемся до зубов! Зачем тут stringbilder если нужно заменить ВСЁ имя на звёздочки, примерно так: // Маскируем имя треда звездочками String threadName = t.getName(); String maskedName = threadName.replaceAll(".", "*"); // Выводим описание ошибки в консоль System.out.println(e.getMessage().replaceAll(t.getName(), maskedName));
24 апреля 2025
ДНО ПРОБИЛ
Евгений Уровень 37
3 ноября 2025
у меня как то было 108 попыток решить одну задачу. Не помню какой квест правда
Алексей Уровень 1
17 ноября 2024
шутник, млин...
por Уровень 40
31 мая 2024
я единственный, кто из 2024.... нас было много, смеялись и улыбались. мы решали задачки, читали глупые лекции на джава раш. их не вижу здесь, сейчас.....
Long_byte Уровень 55
6 июня 2024
думал я единственный
Private Joker Уровень 36
13 августа 2024
судя по уровню ты прошел блок коллекции?
Aliransa Уровень 41
17 сентября 2024
мы не единственные) просто не все пишут комменты)
illirenz Уровень 6
16 октября 2024
Всмыыысле единственный
wokku Уровень 51
13 августа 2023
Хорошие задачи.
Bohdan Уровень 38
5 июля 2023
люди добрые, скажите мне пожалуйста: задачи не отвечают уровню подготовки в предедущих лекциях, или мне кажеться? - потому что у меня при решении задач возникает много вопросов. я надеюсь я не один такой. спасибо за ответ, всем хорошого дня
Евгений Уровень 33
29 августа 2023
Да, есть такое. Частенько дают в задачках то, что появляется в будущих лекциях. Это специально делают, чтобы человек учился гуглить, а не надеялся только на материалы.
Илья Бунин Уровень 29
5 февраля 2023
Но... я хотел 50...
Юрий Зиненко Уровень 41
18 декабря 2022
getStackTrace() оказался не нужен для решения этой задачи
Aliransa Уровень 41
17 сентября 2024
я пол дня его пыталась прикрутить к задаче)
Уровень 51
15 декабря 2022
ладно.
Igor Petrashevsky Уровень 47
13 июня 2022
Было бы интересно узнать как на практике проверить правильность задачи. когда main() пустой - это отстой
CyberBoar Уровень 1
14 июня 2022
никто не запрещает вам создать метод main, а после тестов удалить или закомментировать его.
Igor Petrashevsky Уровень 47
14 июня 2022
никто не научил создавать такой метод, чтобы вызывать заданные состояния или исключения
Dima Klovnykh Уровень 29
28 июля 2022
Мне кажется можно было и самому догадаться Вот результат:
Виктор Уровень 1
16 сентября 2022
Как самостоятельно кидать исключения? да легко...

throw < Ваше исключение>
// Пример:
throw new Error("Абра-Кадабра");
По поводу проверки. На самом деле вам не обязательно даже делать поток. В принципе вы делаете обычный метод и в нём проверяете свой код, для последней задачи, например, так:

public class Solution implements Thread.UncaughtExceptionHandler {

    @Override
    public void uncaughtException(Thread t, Throwable e) {
    }

    public static void main(String[] args) {
        try {
            throw new Exception("ABC", new RuntimeException("DEF", new IllegalAccessException("GHI")));
        } catch (Exception e) {
            // Ваш код
        }
    }
}
Потом перекинете то, что в секции "ваш код" в uncaughtException и на проверку.
Юрий Зиненко Уровень 41
18 декабря 2022
public static void main(String[] args) throws Exception { Thread.setDefaultUncaughtExceptionHandler(new Solution()); throw new Exception("ABC", new RuntimeException("DEF", new IllegalAccessException("GHI"))); }
Aliransa Уровень 41
17 сентября 2024
проверка к задаче "Живем своим умом"

new Solution().uncaughtException(new Thread(), new Exception("ABC", new RuntimeException("DEF", new IllegalAccessException("GHI"))));    }
"Вооружаемся до зубов!"

new Solution(new TimerTask() {
            @Override
            public void run() {
                throw new RuntimeException();
            }
        }).run();