首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

throw和finally同时用的有关问题

2011-12-30 
throw和finally同时用的问题public void test() throws Exception{try{...}catch(Exception e){throw e}f

throw和finally同时用的问题
public void test() throws Exception{
  try{
  ...
  }catch(Exception e){
  throw e;
  }finally{
  ...
  }
}

如下形式调用test()方法:
try{
  test();
}catch(Exception e){
  System.out.println(e.getMessage());
}
输出结果为空,如果将test方法中的finally块去掉就能输出错误信息,这是怎么回事啊?

[解决办法]
finally总会执行,throw语句将结束方法的执行,但是指向完了throw语句之后,控制权就转到finally了,throw语句就起不到抛出异常结束方法的作用了
[解决办法]
try{ 
test(); 
}catch(Exception e){ 
System.out.println(e.getMessage()); 

这里执行到test()时执行下面的test函数
public void test() throws Exception{ 
try{ 
... 
}catch(Exception e){ 
throw e; 
}finally{ 
... 


而这个test函数在执行完finally里后程序就结束了,它不会返回到下面程序中的catch再执行,所以不会有输出,当你去掉了finally后它就会再执行完上面函数的方法后继续执行下面程序中的catch语句,就会返回e.getMseesage()的值了
try{ 
test(); 
}catch(Exception e){ 
System.out.println(e.getMessage()); 

热点排行