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语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/Knuth/p/2383853.html
Copyright © 2011-2022 走看看