SHARE
TWEET

Untitled

a guest Nov 15th, 2017 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.javarush.task.task25.task2511;
  2.  
  3. import java.util.TimerTask;
  4.  
  5. /*
  6. Вооружаемся до зубов!
  7.  
  8. Создай свой UncaughtExceptionHandler в виде локального класса внутри конструктора.
  9. UncaughtExceptionHandler должен маскировать звездочками имя трэда и выводить в консоль описание возникшей ошибки.
  10. «Thread-0» должно быть заменено на «********».
  11. «Thread-4321» должно быть заменено на «***********».
  12.  
  13.  
  14. Требования:
  15. 1. Определение класса Solution и его поля менять нельзя.
  16. 2. Конструктор Solution должен создавать свой UncaughtExceptionHandler, и сохранять его в поле handler.
  17. 3. Созданный UncaughtExceptionHandler должен выводить описание возникшей ошибки в консоль.
  18. 4. В описании ошибки имя трэда должно быть замаскировано символами "*".
  19. */
  20. public class Solution extends TimerTask {
  21.     protected TimerTask original;
  22.     protected final Thread.UncaughtExceptionHandler handler;
  23.  
  24.     public Solution(TimerTask original) {
  25.         if (original == null) {
  26.             throw new NullPointerException();
  27.         }
  28.         this.original = original;
  29.         this.handler = new Thread.UncaughtExceptionHandler() {
  30.  
  31.             /**
  32.              * Method invoked when the given thread terminates due to the
  33.              * given uncaught exception.
  34.              * <p>Any exception thrown by this method will be ignored by the
  35.              * Java Virtual Machine.
  36.              *
  37.              * @param t the thread
  38.              * @param e the exception
  39.              */
  40.             @Override
  41.             public void uncaughtException(Thread t, Throwable e) {
  42.                 e = new Exception(e.getMessage().replace(t.getName(),starmask(t.getName())),e);
  43.                 System.out.println(e.getMessage());
  44.             }
  45.         };    //init handler here
  46.     }
  47.  
  48.     public void run() {
  49.         try {
  50.             original.run();
  51.         } catch (Throwable cause) {
  52.             Thread currentThread = Thread.currentThread();
  53.             handler.uncaughtException(currentThread, new Exception("Blah " + starmask(currentThread.getName()) + " blah-blah-blah", cause));
  54.         }
  55.     }
  56.  
  57.     public long scheduledExecutionTime() {
  58.         return original.scheduledExecutionTime();
  59.     }
  60.  
  61.     public boolean cancel() {
  62.         return original.cancel();
  63.     }
  64.  
  65.     public static void main(String[] args) {
  66.     }
  67.  
  68.     private String starmask(String s) {
  69.  
  70.         return s.replaceAll(".","*");
  71.     }
  72. }
RAW Paste Data
Top