try catch finally执行顺序

没有异常的情况下,不会执行catch的内容,会先执行try,在执行finally


image.png

image.png

有异常的情况下则先try,再catch,最后finally


image.png

image.png

如果在catch里面直接return呢?


image.png

image.png

好像一样哈,其实debug发现,还是有点不同的,这里的return是走的16行,catch中的return,而不是23行的return,也就是是说,先执行的try,然后catch,finally,最后在返回catch中return。

如果在finally里面加return呢?


image.png

此时编译器就会报错,认为23行的return已经不可能走到,这里走的是21行的return


catch与finally同时return又会怎么走?


image.png

image.png

debug下来是一路顺坡,19行的return不走,走的是22行的return。


try catch finally 三个都加return,同台竞技。我预先认为不是从catch走


image.png

image.png

结果是还是执行finally里面的return。


总结下:
try catch finally 中,一旦出现异常,try中的return就不会执行,如果finally中有return就执行finally中的,finally中没有就执行catch中的(catch中有return是,是缓存了return中的对象的,但是不返回,在finally中返回,对象的值也可以被finally中更改)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容