• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2006 The Android Open Source Project
2 
3 /**
4  * Test the uncaught exception handler.
5  */
6 public class Main {
main(String[] args)7     public static void main(String[] args) {
8         testThread(1);
9         testThread(2);
10         testThread(3);
11 
12         catchTheUncaught(1);
13     }
14 
testThread(int which)15     private static void testThread(int which) {
16         Thread t = new Helper(which);
17         t.start();
18 
19         try {
20             t.join();
21         } catch (InterruptedException ex) {
22             ex.printStackTrace();
23         }
24     }
25 
catchTheUncaught(int which)26     static void catchTheUncaught(int which) {
27         ThreadDeathHandler defHandler = new ThreadDeathHandler("DEFAULT");
28         ThreadDeathHandler threadHandler = new ThreadDeathHandler("THREAD");
29 
30         System.out.println("Test " + which);
31         switch (which) {
32             case 1: {
33                 Thread.setDefaultUncaughtExceptionHandler(defHandler);
34                 break;
35             }
36             case 2: {
37                 Thread.currentThread().setUncaughtExceptionHandler(
38                         threadHandler);
39                 break;
40             }
41             case 3: {
42                 Thread.setDefaultUncaughtExceptionHandler(defHandler);
43                 Thread.currentThread().setUncaughtExceptionHandler(
44                         threadHandler);
45                 break;
46             }
47         }
48 
49         throw new NullPointerException("Hi diddly-ho, neighborino.");
50     }
51 
52     private static class Helper extends Thread {
53         private int which;
54 
Helper(int which)55         public Helper(int which) {
56             this.which = which;
57         }
58 
run()59         public void run() {
60             catchTheUncaught(which);
61         }
62     }
63 }
64