给定以下代码:
String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}语言规范是否定义了调用test()的返回值?换句话说:它在每个JVM中都是一样的吗?
在Sun JVM中,返回值是2,但我希望确保这不是依赖于VM的。
发布于 2015-03-26 22:25:34
你可以参考下面的链接。我希望它能提供所有细节:
http://www.programmerinterview.com/index.php/java-questions/will-finally-run-after-return/
它说,最终块将始终执行,即使try或catch块有返回语句。如果finally块也有return语句,那么这将覆盖try或catch块中的return语句,在这种情况下,try/catch中抛出的任何异常都将被丢弃(错误的方法)。
https://stackoverflow.com/questions/2309964
复制相似问题