• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2008 The Android Open Source Project
2 
3 
4 /*
5  * Throw an exception from a finalizer and make sure it's harmless.  Under
6  * Dalvik this may also generate a warning in the log file.
7  */
8 public class Main {
9     static Object waiter = new Object();
10     static volatile boolean didFinal = false;
11 
createAndForget()12     static void createAndForget() {
13         Main main = new Main();
14     }
15 
main(String[] args)16     public static void main(String[] args) {
17         createAndForget();
18 
19         System.gc();
20         System.runFinalization();
21 
22         while (!didFinal) {
23             try {
24                 Thread.sleep(500);
25             } catch (InterruptedException ie) {
26                 System.err.println(ie);
27             }
28         }
29 
30         /* give it a chance to cause mayhem */
31         try {
32             Thread.sleep(750);
33         } catch (InterruptedException ie) {
34             System.err.println(ie);
35         }
36 
37         System.out.println("done");
38     }
39 
finalize()40     protected void finalize() throws Throwable {
41         System.out.println("In finalizer");
42 
43         didFinal = true;
44 
45         throw new InterruptedException("whee");
46     }
47 }
48 
49