如果尝试并最终在方法中返回布尔值会发生什么

时间:2013-12-07 14:51:34

标签: java

我有一节课 - 公共课检查{

public static void main(String[] args) {
    System.out.println(new Check().isRight());
}


public boolean isRight(){
    try{
        return true;
    }finally{
        return false;
    }
}

方法isRight在finally子句中返回true和false,最后它返回false,因为finally子句肯定会被调用,所以什么实际上发生了try里面的数据。 我需要知道输出背后的逻辑原因,我读过但不能正确理解。

3 个答案:

答案 0 :(得分:5)

仅当您使用finally或JVM craches时,才会调用

System.exit()

在所有其他情况下,系统会调用finally,因此会返回false。怎么样?

当达到return中的try时,控件会转移到finally,您return false ..简单。

浏览official docs以更好地了解这一点。

答案 1 :(得分:2)

您的代码始终返回false,因为finally块在执行try-catch语句后始终执行,无论JVM崩溃什么,或System.exit()try其他人已经提到了。

因此,当return true;块到达finally语句时,控件将传递给{{1}}块,并返回false(覆盖前一个真值)。

答案 2 :(得分:0)

false将在那里归还。这就是最终的想法 - 它对事物有了最后的发言权。将调用 finally ,并且会在您的代码中提及false。