ps:(大神请忽略此文章)
我们根据已有知识知道:
return 是可以当作终止语句来用的,我们经常用它来跳出当前方法,并返回一个值给调用方法。然后该方法就结束了,不会执行return下面的语句。
finally :在进行异常处理了之后,最后还会有一个finally语句,此语句将作为异常的统一出口,不管是否发生了异常,都会执行此段代码,除非程序结束了。程序结束包括一些情况比如电脑关机,电脑重启,软件关闭等。
那么问题来了。。。。在try语句里使用return后,finally是否还会执行?finally一定会执行的说法是否还成立?如果成立,那么先执行return还是先执行finally?
小编作为一个菜鸟初学者,今天在写代码时就遇到了这个问题,幸好有李哥大佬细致给我讲解了一下,请往下看。

通过这段代码结果,可以得出finally语句是执行了。

这段代码结果却得出没执行finally语句。
这就给小编搞蒙了,到底是怎么回事,在李老师用画图给我讲解下,我终于明白了。请看下图:

我们知道,return运行时,会有一个返回值,它其实是复制对象p在堆内存的地址,然后往下执行finally语句,把18改成28,这时候return返回后,输出的p的年龄就是28.

然后我们来看这段,因为定义的a时基本数据类型,直接把a的值存在了栈内存里边,同样,return返回值成了10,然后finally语句执行,将a改成20,但是因为return返回值已经备注好了,所以输出的也是这个返回值,故这个代码输出的就是10了。
所以呢,这两段代码都是运行了finally语句的,小编学会了,不知道屏幕前的小伙伴有没有明白呢?欢迎大家评论。
免责声明:文章内容来自互联网,本站仅提供信息存储空间服务,真实性请自行鉴别,本站不承担任何责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:处理异常后的finally到底是否执行了?-finally 里面异常 https://www.bxbdf.com/a/147566.shtml