日期:2014-05-20  浏览次数:20809 次

异常的处理问题
  学到java的异常处理机制时,对于代码的执行流程有点困惑

对于一般方法中,代码执行的流程是try{},catch{},finally{},这是无可厚非的,代码如下:
1.
try{
  
   throw e;   
}catch{
  int a =0;
  //throw e;  
}
finally{
System.out.println("normal");  
}

那么如果实在main方法中的如下代码呢?当执行catch中的代码时抛出的异常给Java虚拟机,按理他会执行虚拟机自己的处理方法,输出异常信息,然后终止程序,那么下面的Main就不会输出,但实际上,“Main”是输出的,并且接着normal后面,求解释?
2.
try{
  
   throw e;   
}catch{
 // int a =0;
System.out.println("normal");
  throw e;  
}
finally{
System.out.println("Main");
}


------解决方案--------------------
finally是异常的统一出口。。。必须执行