最近我惊讶地发现在Java中的finally块中可以有一个return语句.
似乎很多人认为这样做是不好的,如' 不要在最终条款中返回 '中所描述的那样.更深入地抓了一下,我还发现' Java的回归并不总是 ',这显示了最终块中其他类型的流控制的一些非常可怕的例子.
所以,我的问题是,有人能给我一个例子,其中finally块中的return语句(或其他流控制)产生更好/更可读的代码吗?
鉴于此代码:
String test() {
try {
return "1";
} finally {
return "2";
}
}
Run Code Online (Sandbox Code Playgroud)
语言规范是否定义了调用的返回值test()?换句话说:每个JVM中它总是一样的吗?
在Sun JVM中,返回值是2,但我想确定,这不依赖于VM.