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;
 | |
|   }
 | |
| }
 |