尝试-捕获-最终机制中的 Java 返回值
2022-09-04 08:33:27
我刚刚遇到以下代码:
public class TestFinally {
public static void main(String[] args) {
int returnValue = function();
System.out.println("Return value: " + returnValue);
}
public static int function() {
try {
return 1;
} catch (Exception e){
return 2;
} finally{
return 3;
}
}
}
毫无疑问,运行此代码将产生“返回值:3”的输出。
但是,我很好奇:
- JVM中内脏的机制。有谁知道 VM 是否通过覆盖第一个“返回 1”来替换堆栈上的返回值?如果是这样,在哪里可以找到有关此的更多信息。
- 我还没有在最终的机制中找到返回的用途,这种机制以这种方式使用,并允许在JVM中实现。如果将此代码构造用作返回错误代码的方法,则在我看来,有更好的方法来记录错误或返回这些错误代码。有没有人发现这种结构的用途?
提前非常感谢。
干杯,维恩