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