aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.lang/pr83.java
blob: b209aff28b4c9943243128c1544dd70f7b8e6c4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// PR 83

/*
 * test that caught null pointers exceptions in finalizers work correctly
 * and that local variables are accessible in null pointer exception handlers.
 */
import java.io.*;

public class pr83 {
    
    static String s;
    
    public static void main(String[] args) {
	System.out.println(tryfinally() + s);
    }
    
    public static String tryfinally() {
	String yuck = null;
	String local_s = null;
	
	try {
	    return "This is ";
	} finally {
	    try {
		local_s = "Perfect";
		/* trigger null pointer exception */
		String x = yuck.toLowerCase();
	    } catch (Exception _) {
		/* 
		 * when the null pointer exception is caught, we must still
		 * be able to access local_s.
		 * Our return address for the finally clause must also still
		 * be intact.
		 */
		s = local_s;
	    }
	}
    }
}