通过阅读本论坛中与上述主题相关的所有问题(请参见标题),我完全理解finally总是会调用该问题。(System.exit和无限循环除外)。但是,我想知道是否return在catch块中调用了a,然后return从finally块中调用了另一个。
例如:
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。这意味着最终总会运行。我认为尽管其他“返回”根本没有执行。在许多帖子中,我发现一个事实,那就是最终将内容覆盖在catch子句return已经编写的内容之上。我的理解是,一旦将要对catch子句中的返回值进行评估,控制流便会传递到finally子句,该子句又具有另一个返回值,这次将对返回值进行评估,而不会将控制权传递回catch子句。这样,return在运行时唯一调用的将是final返回。你同意吗?
甲return在finally不传递回控制到程序但返回值,并结束方法。我们可以这样说吗?
尚方宝剑之说
海绵宝宝撒
慕姐8265434
相关分类