没啥特别的还以为能输出2的,就一点finally肯定是要执行,即使catch抛异常

解决方案 »

  1.   

    可是 都return 了啊
      

  2.   

    finally肯定会执行的,不管return与否
      

  3.   

    try中先return了,但是没有输出,return的值先放在一个临时文件中,finally执行后,return的值再输出
      

  4.   

    可是 都return 了啊
    java就是这样设计的,有些资源清理(如关闭文件,数据库连接)必须总是执行,即使有异常发生,
    也可以根据把需要总是需要执行的代码放进去
      

  5.   

    finally  这么叼,他家人知道不?
      

  6.   

    可是 都return 了啊
    return又怎样。
    public static String get(){
         
        try {
            System.out.println("返回1");
            return "1";
        } catch (Exception e) {
            // TODO: handle exception
          return "-1";
        }finally{
            System.out.println("返回2");
            return "2";
        }
        
    }
      

  7.   

    finally 在return之前执行 ,如果finally中含有return语句,其他的return语句将不执行。
      

  8.   

    可是 都return 了啊
    return又怎样。
    public static String get(){
         
        try {
            System.out.println("返回1");
            return "1";
        } catch (Exception e) {
            // TODO: handle exception
          return "-1";
        }finally{
            System.out.println("返回2");
            return "2";
        }
        
    }
    这个要怎么解释
      

  9.   

    谁能解释解释 return 和 finally,到底咋回事?
      

  10.   

    return 和 finally 他俩到底有没有 jq 啊?
      

  11.   


    关于finally和return,你读下编译后的字节码吧,运行过程非常清楚。
      

  12.   

    就是想说直接解释一下return和finally原理~
      

  13.   

    这是java虚拟机说了算啊,它说finally必须得执行,那不管你在哪return,所以别纠结这种问题了,java语法就这样规定的,你能咋滴。
      

  14.   

    return 并不是直接就返回值的,它先把值压入栈中等待finally里面的语句执行完毕 再出栈把值返回如果你的finally里面也有return 就会把原来的那个值覆盖 (个人理解 觉的是这样的)
      

  15.   


    结果是
    ----
    1分析:
    在try语句块中return “-1”
    只是把return的值返回给main了,但是程序的执行点还没有返回到main方法里面,而是要向下执行finally语句块(无论如何,finally都是会执行的),finally语句块里的print(“----”)执行,然后程序执行回到main方法将return的值-1赋值给s,然后print(s)所以结果是先  打印  ----   而后打印   s=“1”
      

  16.   

    这是java虚拟机说了算啊,它说finally必须得执行,那不管你在哪return,所以别纠结这种问题了,java语法就这样规定的,你能咋滴。这不是纠结的问题,我就是想明白深入一下,当然这种问题都知道答案。但是java为什么会是这样的~需要深入考虑的啊~