try或catch中return了,finally还会执行吗?

先说结论,会!

try..catch..finally结构,其执行顺序是先执行try结构体的内容,此时如果try中代码出现异常,那么会执行到catch代码块中进行异常的处理,最后不管有无异常都会执行finally代码块执行一个保底的操作。

具体,我们可以看下面的一块代码:

try或catch中return了,finally还会执行吗?

我们可以看到,代码执行到13行时,1/0会抛出异常,进入catch代码块中,执行完代码块打印函数后,立刻返回。此时,却没有像我们想的一样退出整个代码块,而是执行完finally内代码块的内容才真正的退出。因此,就标题而言,finally只有真正执行完才会退出。

注意,以上只是一般正常的情况。凡事都有例外,碰到以下几种情况,finally也不会被执行:

1.如果代码没有进入try..catch..finally结构就返回,finally不会被执行

2.如果代码没有进入try..catch..finally结构就抛出异常,finally不会被执行

3.如果进入catch时,虚拟机被终止了,finally也不会被执行


如果内容对您有帮助,希望您能多多点赞收藏加关注,激励作者创作出更加优质内容,谢谢!

还会   catch   try
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章