什么情况下不会执行finally中的代码?
来源:互联网 发布:win10声音优化软件 编辑:程序博客网 时间:2024/05/05 14:15
除非在try块或者catch块中调用了退出虚拟机的方法(即System.exit(1);),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块总是会被执行的。不过,一般情况下,不要再finally块中使用return或throw等导致方法终止的语句,因为一旦使用,将会导致try块、catch块中的return、throw语句失效。
总结一下这个小问题:
当程序执行try块,catch块时遇到return语句或者throw语句,这两个语句都会导致该方法立即结束,所以系统并不会立即执行这两个语句,而是 去寻找该异常处理流程中的finally块,如果没有finally块,程序立即执行return语句或者throw语句,方法终止。如果有 finally块,系统立即开始执行finally块,只有当finally块执行完成后,系统才会再次跳回来执行try块、catch块里的 return或throw语句,如果finally块里也使用了return或throw等导致方法终止的语句,则finally块已经终止了方法,不用 再跳回去执行try块、catch块里的任何代码了。
综上:尽量避免在finally块里使用return或throw等导致方法终止的语句,否则可能出现一些很奇怪的情况!
使用throws抛出异常的思路是:当前方法不知道如何处理这种类型的异常,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用使用throws声明抛出异常,该异常将交给JVM来处理。
JVM对异常的处理方法:打印异常跟踪栈的信息,并终止程序运行,所以有很多程序遇到异常后自动结束。
- 什么情况下不会执行finally中的代码?
- finally中的代码块在什么情况下不会被执行
- finally 不会执行的情况
- finally代码执行的情况
- finally语句块不会被执行的情况
- 异常处理中的finally语句块在什么情况不执行?
- mysql什么情况下不会使用索引
- fianly代码块什么情况下不执行
- java Finally代码块真的任何情况下都是执行的?
- finally代码块中的代码什么时候执行
- finally块中的代码一定执行吗
- finally块中的代码一定执行吗
- try,catch,finally分别在什么情况下使用
- 后台中的finally,有时不被执行的情况
- 各种return情况下try,catch,finally的执行顺序
- try catch finally 几种情况下的执行结果。
- 有Return情况下的try catch finally执行顺序
- 有 Return 的情况下 Try Catch Finally的执行顺序(详细的代码以及解释)
- Android会议室管理app
- 欢迎使用CSDN-markdown编辑器
- CS0016: 未能写入(A compilation error has occurred.HttpCompileException: error CS0016: Could not write to
- 实现两个N*N矩阵的乘法 矩阵用一维数组表示
- C语言统计输入的单词个数
- 什么情况下不会执行finally中的代码?
- Unity3D 游戏架构脚本该如何来写
- CoreData封装工具类
- 图解SSIS批量导入Excel文件
- android studio官网
- Hello world
- Unity3d 引擎原理详细介绍
- POJ 2253
- Git 基本概念及常用命令