| // Check that a NPE likely thrown from the first instruction of a |
| // method (foo) is properly caught. |
| public class Throw_3 |
| { |
| public static void main(String[] args) |
| { |
| Throw_3 al = new Throw_3(); |
| try |
| { |
| al.foo(null); |
| } |
| catch (NullPointerException npe) |
| { |
| StackTraceElement ste[] = npe.getStackTrace(); |
| StackTraceElement top = ste[0]; |
| if ("foo".equals(top.getMethodName())) |
| { |
| System.out.println("ok"); |
| return; |
| } |
| } |
| System.out.println("bad"); |
| } |
| |
| public int bar(int[] a) |
| { |
| System.out.println("Bar"); |
| return 5; |
| } |
| |
| /** |
| * If the second parameter ('this' being the first) is passed in a |
| * register, then the first machine instruction in foo is likely to |
| * fault when null is passed. |
| */ |
| public int foo(int[] a) |
| { |
| int l = a.length; |
| return l + l; |
| } |
| } |