zoukankan      html  css  js  c++  java
  • java 中 finally 语句块的 深度解析 总结

    利用了一小段时间看完了这篇写的还是可以的 但是发现竟然写错了一个地方 这个接下来就会提到


    一、博主首先给大家一个问题:finally在程序中一定会执行吗?

    答案:否,只有与 finally 对应的 try 语句块得到执行的情况下,finally 语句块才会执行。

    二、博主又问如果对应的 try 语句块得到执行了,finally 语句块一定会执行吗?

    答案:依然否,在try 语句块执行的过程中如果调用终止虚拟机的指令,依然无法得到执行,甚至在线程执行 try 或者 catch 语句块的时候突然死机或者断电,finally 语句块肯定无法执行。

    三、 博主不在发问了,在引经据典之后,直接给出了问题的答案!

    结论:不管 try 语句块正常结束还是异常结束,finally语句块是保证要执行的。如果try语句块正常结束,那么在try语句块中的语句都执行完了之后,再执行 finally 语句块。如果 try 语句块中有控制转义语句(throw return break continue),那 finally 语句块会在 try 或者 catch 语句块之前执行,但是这条准则只适用于 throw return 的情况,不适用于break和continue语句,因为他们根本没有返回值。

    四、指出其中的一个小毛病!!!

    毛病之处:在于清单6的运行结果!不是1,而是2;原理是对的,结果博主不知道怎么搞的,弄错了,还是很有收获的!

    总结:想不到一个小小的finally竟然暗藏玄机,看来java功力还要好好练练呐!!! 

  • 相关阅读:
    C++---拷贝构造函数和赋值构造函数
    C++---类成员变量定义为引用
    从文件处理到文件的高级应用
    Jupyter的使用复习
    字符编码到python编辑器流程
    周四的小结
    中秋前的题目
    三段代码块带走今天的脚本
    今日份的随笔
    明天才能学的运算符号表格
  • 原文地址:https://www.cnblogs.com/Knuth/p/2383853.html
Copyright © 2011-2022 走看看