• try catch finally return之间的关系


    一、try catch finally return之间的关系:

    正在写dsoFramer的时候,同事突然说面试的时候问的一个问题,catch和return那个先执行,我瞬间迷茫了,然后整理了整理,稍微找了点资料,才明白这之间的联系。嘿嘿,献丑了。

      1、当这四个关键字全部存在的时候,finally是永远执行的

      ex:1、在try中没有异常的情况下try、catch、finally的执行顺序 try -- finally(catch不执行)

         2、如果try中异常,执行顺序是try -- catch -- finally

         3、try中没有异常并且try中有return这时候正常执行顺序是try -- finally -- return(catch不执行)

         4、try中异常并且try中有return这时候正常执行顺序是try--catch--finally-- return

      2、return是不会执行的

        try-catch-finally里都没有return ,finally 之后有个return ,如果try中有异常,finally执行完后,不再执行return,try中有异常以后,根据异常机制先执行catch后执  行finally,此时错误异常已经抛出,程序因异常而终止,所以return任然不执行。

      3、finally中的return会覆盖掉其它位置的return

        在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch中,在finally中,在finally后(try-catch-finally外的语句块)。在这4个位置都出现  return的情况下(应该是不可能的,如果前面3个位置都存在return,那么最后一个位置的return就成了unreachable code,编译不会通过),最终会执行的return应该是          finally中的return。

  • 相关阅读:
    模板
    kuangbin带你飞
    BZOJ开荒记
    模板
    洛谷
    模板
    [蓝桥杯][2013年第四届真题]危险系数
    数位DP入门题
    备战2019蓝桥杯
    常用的数学符号
  • 原文地址:https://www.cnblogs.com/JeffController/p/4958819.html
Copyright © 2020-2023  润新知