关闭

java中finally语句是否一定会被执行

标签: javafinally
4425人阅读 评论(0) 收藏 举报
分类:
 至少有两种情况下finally语句是不会被执行的:


(1)try语句没有被执行到,如在try语句之前return就返回了,这样finally语句就不会执行。这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。


(2)在try块|catch块中有System.exit(0);这样的语句。System.exit(0)是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。


在try-catch-finally中, 当return遇到finally,return对finally无效,即:

     1.在try catch块里return的时候,finally也会被执行。

     2.finally里的return语句会把try catch块里的return语句效果给覆盖掉。

结论:return语句并不一定都是函数的出口,执行return时,只是把return后面的值复制了一份到返回值变量里去了。




1
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

finally块中的代码什么时候被执行?finally是不是一定会被执行?(见最后引申)

问题描述:try{}里有一个return语句,那么紧跟在这个try{}后面的finally{}中的代码是否会被执行?如果会的话,什么时候被执行,在return之前还是return之后? 在Java...
  • Dove_Knowledge
  • Dove_Knowledge
  • 2017-05-02 10:30
  • 3303

try语句的finally到底是否执行

谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class Test { public int aaa() { int x = 1; ...
  • timruning
  • timruning
  • 2015-07-22 22:41
  • 2646

java中finally语句快会不会执行的问题

一、先看下面的代码 public static void main(String[] args) { try { System.out.println("h...
  • u013126379
  • u013126379
  • 2016-08-04 17:13
  • 1115

finally语句块不会被执行的情况

之前对finally的理解是不管是return、break和continue最后finally语句块总是会被执行,但是,最近在看书的过程中发现,有一种情况下,finally会被彻底抛弃和忽略的,这种情...
  • General_du
  • General_du
  • 2013-08-08 13:12
  • 2325

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,是在return前还是后

一般答案:会执行,在方法返回调用前执行。准确的说是在return中间执行。 下面举个例子: public class Test { public static void main(Strin...
  • qq_17034717
  • qq_17034717
  • 2016-04-26 21:59
  • 3137

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

今天做了一道题,一直以为try
  • u010485626
  • u010485626
  • 2014-10-31 18:31
  • 463

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?

这是一个很有趣的问题,我测试的结果是:是在return中间执行。 我在网上搜寻了一些资料,下面是参考代码: /** * */ package com.b510.test; /** ...
  • paul342
  • paul342
  • 2015-08-06 15:18
  • 708

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

也许你的答案是在return之前,但往更细地说,我的答案是在return中间执行,请看下面程序代码的运行结果: public  class Test {     public stati...
  • ZXFC88
  • ZXFC88
  • 2013-03-26 20:54
  • 4459

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?

这是一个很有趣的问题,我测试的结果是:是在return中间执行。 我在网上搜寻了一些资料,下面是参考代码: 1 /** 2 * 3 */ 4 package com.b510.t...
  • xiaaiwu
  • xiaaiwu
  • 2016-07-25 10:32
  • 1833

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?

这是一个很有趣的问题,我测试的结果是:是在return中间执行。 我在网上搜寻了一些资料,下面是参考代码: 1 /** 2 * 3 */ 4 package com.b5...
  • u012959829
  • u012959829
  • 2015-03-27 15:15
  • 606
    个人资料
    • 访问:17166次
    • 积分:334
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:13篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论