首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java关键字 Finally执行与break, continue, return等关键字的关系

长文短总结: 在程序没有在执行到finally之前异常退出的情况下,finally是一定执行的,即在finally之前的return语句将在finally执行之后执行。...接下来我就带您一步一步的揭开这个 finally 的神秘面纱。 问题分析 首先来问大家一个问题:finally 语句块一定会执行吗?...只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行。...在排除了以上 finally 语句块不执行的情况后,finally 语句块就得保证要执行,既然 finally 语句块一定要执行,那么它和 try 语句块与 catch 语句块的执行顺序又是怎样的呢?...finally 语句块(iinc 0, 1),finally 语句块把位于 0 这个位置的本地变量表中的值加 1,变成 2;待 finally 语句块执行完毕之后,把本地表量表中 1 的位置上值恢复到操作数栈

3.4K60

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块中对返回对象的属性进行改变。

68180

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.3K20

Python中的finally

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

53330

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

前言在上一篇文章中,我们介绍了 Java 异常的基本概念,Throwable 、异常处理关键字:try-catch-finally、throw、throws;本篇文章我们将更加深入的了解 finally...版本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 代码块一定会执行?

25871
领券