mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-21 11:39:53 +08:00
40 lines
819 B
Java
40 lines
819 B
Java
|
// 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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|