Advertisement
jaVer404

level16.lesson13.bonus03

Sep 23rd, 2015
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package com.javarush.test.level16.lesson13.bonus03;
  2.  
  3. /* Отдебажим все на свете
  4. Разобраться, что делает програма.
  5. Почитать про UncaughtExceptionHandler - это важно.
  6. Еще раз внимательно посмотреть программу.
  7.  
  8. Разобраться - продебажить - почему наш OurUncaughtExceptionHandler не срабатывает.
  9. Исправить ошибку, т.е. все должно работать. :)
  10.  
  11. Ожидаемый результат в произвольном порядке:
  12. Нить 1: My exception message
  13. Нить 2: My exception message
  14. */
  15.  
  16. public class Solution {
  17.     public static Thread.UncaughtExceptionHandler handler = new OurUncaughtExceptionHandler();
  18.  
  19.     public static void main(String[] args) {
  20.         TestedThread commonThread = new TestedThread(handler);
  21.         /*
  22.         * 1. У TestedThread есть конструктор, которому передается
  23.          *   UncaughtExceptionHandler как аргумент; sets new OurUncaughtExceptionHendler;
  24.          *   new OurUncaughtExceptionHandler (System.out.println(t.getName() + ": " + e.getMessage());)//должно ловить.
  25.          *   при создании TesetedThread выбрасывает uncaught exception,
  26.          *2.
  27.         * */
  28.  
  29.         Thread threadA = new Thread(commonThread, "Нить 1");//как аргумент commonThread
  30.         Thread threadB = new Thread(commonThread, "Нить 2");
  31.  
  32.         threadA.start();
  33.         threadB.start();
  34.         threadA.setUncaughtExceptionHandler(handler);
  35.         threadB.setUncaughtExceptionHandler(handler);
  36.  
  37.         threadA.interrupt();
  38.         threadB.interrupt();
  39.     }
  40.  
  41.     public static class TestedThread extends Thread {
  42.         /*------------конструктор------------------*/
  43.         public TestedThread(UncaughtExceptionHandler handler) {
  44.             setUncaughtExceptionHandler(handler);
  45.             start();
  46.         }
  47. /*---------------------------------------------------*/
  48.         public void run() {
  49.             try {
  50.                 Thread.sleep(3000);
  51.             } catch (InterruptedException x) {
  52.                 throw new RuntimeException("My exception message"); //this thread terminates due to uncaught exception
  53.             }                                                       //
  54.         }
  55. /*----------------------------------------------------*/
  56.     }
  57.  
  58.     public static class OurUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
  59.         @Override
  60.         public void uncaughtException(Thread t, Throwable e) /*passing thread (t) and exception (e) as arguments*/
  61.         {
  62.             System.out.println(t.getName() + ": " + e.getMessage());
  63.         }
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement