本帖最后由 apollo_liiu 于 2013-01-23 17:08:11 编辑

解决方案 »

  1.   


    因为你在finally快return了:
    finally{
        System.out.println("finally ..."); 
        return ret;
    }
      

  2.   

    我猜是这个原因 有了finally估计是finally来扑捉了,你可以再没有返回值的finally语句中加个return ;这样编译器也不会强制要求我们抛异常 坐等楼下大神解释
      

  3.   

    为什么有了return就不用"捕获或声明",请hzw2312朋友详细说明下,谢谢了。
      

  4.   

    不是因为这个,是因为永远也不会有IOException,所有能编译
      

  5.   


    抛出了异常,就不执行别的语句,走完finally后就会返回异常信息了。然而finally{return;}又告诉程序不返回异常信息了、直接返回ret!
    这是一个逻辑错误!!!
      

  6.   

    debug调试了一下,methoda中,在finally块执行完后会判断抛出的异常在大括号结束后会显示suspended exception
    methodb中,finally块中直接return返回值,强制退出该方法的执行,返回到main方法,没有执行到finally块的后括号}就已经结束