如果他们跟随返回,最终内部的语句会被执行吗?

时间:2011-03-16 09:54:08

标签: java

  

可能重复:
  In Java, does return trump finally?

想知道如果finally语句在return语句之后仍然会被执行吗?

7 个答案:

答案 0 :(得分:14)

是的,唯一的例外是try block

中的System.exit(1)

答案 1 :(得分:4)

是的,即使你return

,最终也会被执行
public static void foo() {
        try {
            return;
        } finally {
            System.out.println("Finally..");
        }
    }

    public static void main(String[] args) {
        foo();
   }

输出:

Finally..

答案 2 :(得分:1)

如果return语句在其关联的try块之前,则不行。

如果return语句位于关联的try块内,则为是。

public void foo(int x)
{
    if (x < 0)
        return; // finally block won't be executed for negative values

    System.out.println("This message is never printed for negative input values");
    try
    { 
        System.out.println("Do something here");
        return;    
    }
    finally
    {
        System.out.println("This message is always printed as long as input is >= 0");
    }
}

答案 3 :(得分:0)

是的,最终将在return陈述之后执行。

答案 4 :(得分:0)

是的,当然。最后声明被设计为在任何情况下执行,如果执行将进入try语句。

答案 5 :(得分:0)

只有当我们通过调用System.exit(int)Runtime.getRuntime().exit(int)终止JVM时,

finally块才会失败。

答案 6 :(得分:0)

除了其他答案之外,如果finally块中有返回,则返回后的语句将不会被执行。

finally
    {
        System.out.println("In finally");
        if ( 1 == 1 )
            return;
        System.out.println("Won't get printed.);
    }

在上面的片段中,显示“在最后”,而“不会打印”则不显示。