一尘不染

Java多次收益:哪一个设定最终收益?

java

给出以下代码:

String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}

语言规范是否定义了对的调用的返回值test()?换句话说:每个JVM是否总是相同?

在Sun JVM中,返回值为2,但是我想确定这与VM无关。


阅读 340

收藏
2020-03-06

共1个答案

一尘不染

是的,语言规范定义结果为“ 2”。如果VM采取不同的方式,则不符合规范。

大多数编译器都会对此抱怨。以Eclipse为例,它将声称永远不会执行return块,但这是错误的。

编写这样的代码是非常糟糕的做法,永远不要这样做:)

2020-03-06