Guest User

Untitled

a guest
Nov 15th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment