尝试-捕获-最终-返回澄清
通过阅读与此论坛中已经提出的与上述主题相关的所有问题(见标题),我完全理解它总是被调用。(from 和 infinite 循环除外)。但是,我想知道是否在 catch 块中调用了 a,然后从 finally 块调用了另一个。finally
System.exit
return
return
例如:
public static void main(String[]args) {
int a = new TestClass().absorbeTheValue();
}
int absorbeTheValue() {
try {
int a = 10/0;
if (a > 0) return 4;
} catch(Exception e) {
return 45;
} finally {
return 34;
}
}
因此,这里的输出(当调用该方法时)在任何情况下都将是34。这意味着最终总是被运行。我认为,虽然其他“回报”根本没有运行。在许多帖子中,我发现最终将内容写在了捕获子句已经写过的内容上。我的理解是,一旦捕获子句中的返回值即将被评估,控制流就会传递给 finally 子句,而该子句又具有另一个返回值,此时将评估返回值,而不会将控制权传递回 catch 子句。这样,在运行时调用的唯一操作将是最终返回。你同意这种说法吗?return
A 不会将控件传递回程序,但返回值并终止该方法。我们能这样说吗?return
finally