mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			900 B
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			900 B
		
	
	
	
		
			Java
		
	
	
	
// 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;
 | 
						|
  }
 | 
						|
}
 |