Home | History | Annotate | Download | only in src
      1 // Copyright 2006 The Android Open Source Project
      2 
      3 /**
      4  * Test the uncaught exception handler.
      5  */
      6 public 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 }
     64