Java中异常处理的顺序是如何进行的?
我写了一个很简单的算术异常的程序,如下: 
 public   class   ExceptionTest 
 { 
       public   static   void   main(String[]   args){ 
          try 
 	{ 
 	      int   k; 
                                  k   =   cc(10,   0); 
 	      System.out.println(k); 
 	}    
          catch   (Exception   e){ 
             	System.out.println(e.toString()); 
 	e.printStackTrace(); 
 	} 
                	System.out.println( "end~~ "); 
 	}  	 
 static   int   cc(int   i,   int   j) 
 	{  		 
 		int   k   =   (i   /   j); 
 		return   k; 
 	}  	 
 }   
 可是在运行的结果里却有点问题。 
 结果如下:  
java.lang.ArithmeticException:   /   by   zero 
 end~~ 
 java.lang.ArithmeticException:   /   by   zero 
 	at   lydia.ExceptionTest.cc(ExceptionTest.java:32) 
 	at   lydia.ExceptionTest.main(ExceptionTest.java:15)     
 问题就出在输出end~~ 
 这个语句里!!!   
 这句是写在最后的(虽然没用finall这个关键词),可是运行的结里,有时end~~会出现在最后,有时会出现在中间,当然,有时又会出现在最开始的地方。   
 我想问一下,这是为什么?在JVM中如何具体操作的???
------解决方案--------------------你应该在 cc(int i,int j) 中抛出异常
------解决方案--------------------我运行了一下程序,现象确实像lz说的那样,不过,我觉得原因不在于end~~那句,而是这句:e.printStackTrace();如果把这句去掉的话,结果就只有一个了:java.lang.ArithmeticException: / by zero 
 end~~ 
 也许jvm在调用e.printStackTrace()的时候启用什么机制吧,我也不确定~~呵呵,等待高手~~
------解决方案--------------------Throwable.printStackTrace是输出到标准错误流 
 System.out是标准输出流   
 不是输出到同一个流   
 而两个流输出到屏幕上的先后顺序是和调用你java程序的程序有关系的.