美文网首页
Java finally与return

Java finally与return

作者: 黎明第一束光 | 来源:发表于2018-10-29 17:22 被阅读0次

    在try-catch-finally块中finally有两种情况不会执行

    1.在try-catch块中调用system.exit(0)终结jvm finally不会执行

    2.在多线程下try-catch被interrupt中断 可能不会执行finally

    try-catch-finally中出现return执行顺序改变

    图1

    如图1 如果未发生异常正常执行 则是先执行Try中的内容 打印 "执行try" 然后返回 2

    总结:如果try中有return, finally中也有return 在未发生异常时会执行try 中return前面的语句 也会执行try的return关键字后面的语句 但是不会返回 紧接着去执行finally 如果finally中有return则会一路执行完最后返回finally中的return的结果

    图2

    如图2 未发生异常 先打印 "执行try" 在打印 "执行finally" 最后返回1

                如果发生异常 先打印 "执行try" 在打印 “执行finally” 最后返回2

    总结:不管try中有return还是catch中有return 总是当执行到return时先不返回结果 去执行finally 然后才会去相应的地方返回结果

    图3

    如图3 

    未发生异常  先打印 "执行try"  在打印 “执行finally”  再返回1 

    这里和上面的有点不同,在try中执行到return时 就会把return后面的语句执行了 这是保存下待返回的数据 再去执行finally 这时try已经保存了将要返回的数据 即使finally中将i自增1此时try中返回的还是1

    发生异常

    发生异常同未发生返回的相同 就是多了个执行catch

    相关文章

      网友评论

          本文标题:Java finally与return

          本文链接:https://www.haomeiwen.com/subject/hyzbtqtx.html