· 9 years ago · Oct 30, 2016, 06:06 PM
1package com.javarush.test.level25.lesson05.task02;
2
3import java.util.concurrent.TimeUnit;
4
5/* Без дураков
61. Создай private class MyUncaughtExceptionHandler, который на перехват иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ подождать половину Ñекунды,
7а затем вывеÑти на Ñкран secretKey, Ð¸Ð¼Ñ Ñ‚Ñ€Ñда и Ñообщение возникшего иÑключениÑ.
8ИÑпользуй String.format(...). Пример:
9super secret key, Thread-0, it's an example
102. РазберитеÑÑŒ в поÑледовательноÑти выполнÑемого кода и обеÑпечьте логирование Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² п.1.
113. Метод main в теÑтировании не учаÑтвует.
12*/
13public class Solution {
14
15 public static void main(String[] args) {
16 MyThread myThread = new Solution().new MyThread("super secret key");
17 myThread.start();
18 }
19
20 public class MyThread extends Thread {
21 private String secretKey;
22
23 public MyThread(String secretKey) {
24 this.secretKey = secretKey;
25 setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
26 }
27
28 @Override
29 public void run() {
30 throw new NullPointerException("it's an example");
31 }
32
33 private class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
34 @Override
35 public void uncaughtException(Thread t, Throwable e) {
36 try {
37 TimeUnit.MILLISECONDS.sleep(500);
38 System.out.printf("%s, %s, %s", secretKey, t.getName(), e.getMessage());
39 } catch (InterruptedException ignore) {
40 /*NOP*/
41 }
42 }
43 }
44 }
45
46}