try{
system.out.println("show.....");
System.in.read();
return;
}
catch(ioexception e)
{
system.out.println("i/o exception");}finally
{system.out.println("finally.....");
}System.out.println("................");请问执行完finally块后是执行try的return还是finally后面的语句

解决方案 »

  1.   

    return
    没有异常的话最后一句应该不会执行
      

  2.   

    执行完finally块后是执行finally后面的语句在Java中对异常发生时控制离开try块,此后try块生命期结束
    异常处理完后控制不返回,而是顺着往下执行
    可以实验一下
    try
    {
    system.out.println("show.....");
        throw new ioexception();//该处产生异常,跳出try块
        system.out.println("After exception show....."); //该句不会被执行
    return;
    }
    catch(ioexception e)
    {
    system.out.println("i/o exception");
    }
    finally
    {
    System.out.println("finally.....");
    }
      

  3.   

    回复人: rosifox(下着鱼的天) ( ) 信誉:100  2006-1-4 22:41:58  得分: 0  
     
     
       
    这种东西都问,自己写个小程序测试一下不就知道了  
     
    ------------------------------
    这样会理解得更深刻!
      

  4.   

    我记得是这样的,如果try里面的内容发生异常,进入catch里面,那么就不会执行finally后面的内容。
    否则会执行finally后面的语句。
      

  5.   

    kevinmartin(海魂)
    我记得是这样的,如果try里面的内容发生异常,进入catch里面,那么就不会执行finally后面的内容。
    否则会执行finally后面的语句。
    刚好说反。
      

  6.   

    如果try里面的内容发生异常,则执行finally后面的内容。否则执行try中的return。
      

  7.   

    我记得是
    1 try
    2
     2.1如果没有异常则是finally
     2.2如果有异常则catch块最后finally块
    3 如果catch或者try中有return,则先finally后再return;如果finally中也有renturn 则finally的return完了就算完了
      

  8.   

    楼上正解!
    自己写个代码片断验证一下!
    finally的作用就是保证位于finally块中的代码一定运行——哦,finally里面又抛出异常的除外。