首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

java finally深入探究

When---什么时候需要finally: 在jdk1.7之前,所有涉及到I/O的相关操作,我们都会用到finally,以保证流在最后的正常关闭。...这时候我们就可以将A放入finally块中。很常见的一个操作就是锁的unlock操作。 What---什么是finally: 字面解释就是最终,eventually。...How---如何使用finally: finally块必须配合try块使用,而不能单独使用。...Deeper---深入探究finally块: 在深入探究之前我们直接先给出四个结论: 1. finally块只会在try块执行的情况下才执行 2. finally块在离开try块执行完成后或者try块未执行完成但是接下来是控制转移语句时...那么在finally块执行之前,存储在本地变量中的只是对象引用的值,而不是对象的深拷贝。我们可以在finally块中对返回对象的属性进行改变。

67080

try catch finally 用法

} 3. try{ //逻辑代码 }finally{ //一定要执行的代码 } try { //执行的代码,其中可能有异常。...return ,可以理解为只要执行了try或者catch,就一定会执行 finally } 其实这些都还好理解,主要就是finally中的代码执行顺序的问题,这里给出我的想法: 正常情况下...,先执行try里面的代码,捕获到异常后执行catch中的代码,最后执行finally中代码,但当在try catch中执行到return时,要判断finally中的代码是否执行,如果没有,应先执行finally...... catch... finally... return value of getValue(): 0 意思就是在try 和catch中如果要return,会先去执行finally中的内容再返回。...当在try中要return的时候,判断是否有finally代码,如果有,先执行finally,所以直接return 1.

1.2K20

Python中的finally

本文主要讨论finally的用法。 try...finally的用处是无论是否发生异常都要确保资源释放代码的执行。...如下从几个细节讨论finally的特性。...(by gashero)从这里可以看出,只要程序没有突然终止,则finally中的资源释放语句一定会执行。无论发生什么异常都会执行到finally语句块中的代码。 2、finally之后呢?...实际测试看来,finally之后,try语句块中抛出的异常并没有被处理,而是直接被抛出到try...finally语句块之外了。并且是在finally语句块执行之后继续抛出这个异常的。...3、如果希望直接finally掉呢? 有些时候在处理了finally中的资源释放之后就不再需要继续处理抛出的异常了,在这种情况下可以考虑在finally语句块中使用return语句。

52930

Java 异常处理中篇:finally 中的陷阱(finally 中 return 会发生什么)

版本Java 8finally 中的陷阱我们知道无论是否发生异常还是 try 或 catch 中存在 return,finally 都会执行,下面我们来看看下面几种场景:finally 中使用 return...当我们在 finally 中使用 return 时,try 或 catch 中的 return 会失效或异常丢失(见下文),会在 finally 直接返回。...中直接 return -1 java.lang.ArithmeticException: / by zerothis is finally-1 finally 中修改数据的影响如果你在 finally...finally 代码块一定会执行?...总结本文我们结合了 finally 在实际使用中可能出现的问题并进行分析对应的原因,最后介绍了 finally 在 JVM 中的实现原理,帮助我们在日常开发的更好的使用 finally,下篇文章将会介绍实际异常处理中的一些最佳实践

21871
领券