您的位置:首页 > 产品设计 > UI/UE

包含finally的异常代码块里的return,break,continue语句如何执行

2017-02-26 18:22 573 查看
包含finally的异常代码块结构如下:

try{ return;}catch(){return;} finally{return;}

这种结构里的return语句怎么执行呢?因为这是有finally时的情况,比较特殊。

首先,执行try代码块中位于“return”之前的代码(包括return语句中的表达式运算,比如return 1+1,这个1+1也会被执行),意思就是程序计算了return语句,也知道了return的结果是什么,同时会保存下来,但不立即返回这个结果。

接下来分两种情况,没有异常或者有异常:

没有异常,程序接着执行finally块,返回finally块中的return结果。

有异常,执行catch块中位于“return”之前的代码(包括return语句中的表达式运算),但不立即返回,然后紧跟着执行finally块,因为finally块中有return所以提前退出,覆盖了前边的return,所以并不会返回异常。

同理也适用于continue和break:

即如果有finally的情况下,try中的break或continue都不会立即执行,程序会紧跟着把finally中的语句执行完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐