try、catch、finally--try块里有return,finally还执行吗?

finally块的作用是,保证无论出现什么情况,finally块里的代码一定会被执行。

由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,所以任何语句要执行都只能在return之前执行(除非碰到exit函数)。所以,finally块里的代码也是在return之前执行的

如果try-finally或catch-finally中都有return,那么finally块中的return语句将会覆盖别处的return语句。

对于基本类型的数据,在finally块中改变return的值对返回值没有任何影响;而对引用类型的数据就会有影响。

 

面试:finally块是不是一定会执行?

        1) 当程序在进入try块之前就出现异常,不会执行;

        2) 当程序在try块中强制退出(System.exit(0))时,也不会执行。

posted on 2017-03-16 20:33  一个不会coding的girl  阅读(437)  评论(0编辑  收藏  举报

导航