@@ -0,0 +1,1370 @@
+package com.javarush.task.task25.task2511;%0A%0Aimport java.util.TimerTask;%0A%0A/* %0A%D0%92%D0%BE%D0%BE%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D0%BC%D1%81%D1%8F %D0%B4%D0%BE %D0%B7%D1%83%D0%B1%D0%BE%D0%B2!%0A*/%0Apublic class Solution extends TimerTask %7B%0A    protected TimerTask original;%0A    protected final Thread.UncaughtExceptionHandler handler;%0A%0A    public Solution(TimerTask original) %7B%0A        if (original == null) %7B%0A            throw new NullPointerException();%0A        %7D%0A        this.original = original;%0A        this.handler = new Thread.UncaughtExceptionHandler()%0A        %7B%0A            @Override%0A            public void uncaughtException(Thread t, Throwable e)%0A            %7B%0A                String stars = t.getName().replaceAll(%22.%22, %22*%22);%0A                String newMessage = e.getMessage().replace(t.getName(), stars);%0A                e = new Exception(newMessage, e);%0A                System.out.println(e.getMessage());%0A                t.setName(stars);%0A            %7D%0A        %7D;%0A    %7D%0A%0A    public void run() %7B%0A        try %7B%0A            original.run();%0A        %7D catch (Throwable cause) %7B%0A            Thread currentThread = Thread.currentThread();%0A            handler.uncaughtException(currentThread, new Exception(%22Blah %22 + currentThread.getName() + %22 blah-blah-blah%22, cause));%0A        %7D%0A    %7D%0A%0A    public long scheduledExecutionTime() %7B%0A        return original.scheduledExecutionTime();%0A    %7D%0A%0A    public boolean cancel() %7B%0A        return original.cancel();%0A    %7D%0A%0A%7D

Task --> 2511