blob: 4ee6b050ad36a8800588fe3f46914c49a7fdccf9 [file] [log] [blame]
jeffhao5d1ac922011-09-29 17:41:15 -07001// Copyright 2006 The Android Open Source Project
2
3/**
4 * Test the uncaught exception handler.
5 */
6public class Main {
7 public static void main(String[] args) {
8 testThread(1);
9 testThread(2);
10 testThread(3);
11
12 catchTheUncaught(1);
13 }
14
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
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
55 public Helper(int which) {
56 this.which = which;
57 }
58
59 public void run() {
60 catchTheUncaught(which);
61 }
62 }
63}