Java基础—解惑.异常的一些谜题(1)

先来看一段代码。

package demo;

public class Trydemo {
    public static void main(String[] args) {
        System.out.println(descion());
    }
    static boolean descion(){
        try {
            return true;
        }
        finally {
            return false;
        }
    }
}

输出的结果是false;
按照正常的函数运行的思维,应该是运行到try中的return就退出该函数了,可是最后输出是false,连true都没有。这个就要从语句块的控制权说起了。
首先要说一个看似鸡肋的问题:try语句块必须获得执行权,finally才能有机会获得执行权,也就是在try之前程序return或者抛出异常,也就没后面什么事儿了。
重点!!!:finally 语句块应该是在控制转移语句之前执行。
控制转移语句有 return,break 和 continue。另外,throw 语句也属于控制转移语句。其中 return 和 throw 把程序控制权转交给它们的调用者,而 break 和 continue 的控制权是在当前方法内转移。
也就是说,try或者catch中的控制语句无法执行,这也就说得通上面的输出结果了。
再附上加入catch的样例代码。
这里写图片描述

阅读更多
个人分类: JAVA—基础学习
上一篇Java基础—StringBuffer和StringBuilder的区别
下一篇JDBC—连接sql server数据库的前期准备(初学者必看)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭