资讯专栏INFORMATION COLUMN

【Java】从一段程序看关键字finally

cucumber / 1887人阅读

摘要:在网上看到一段代码运行结果到这里,有很多人会感到纳闷之后函数不就结束了吗怎么还是执行域内的语句为了说明这个问题,我们先谈谈关键字。因此,被用来执行无论是否有异常总是要运行的事件。

在网上看到一段代码

public class Test {
    public static int tt() {
        int b = 23;
        try {
            System.out.println("yes");
            return b += 88;
        } catch (Exception e) {
            System.out.println("error: " + e);
        } finally {
            if (b > 25) {
                System.out.println("b>25: " + b);
            }
            System.out.println("finally");
        }
        return b;
    }

    public static void main(String[] args) {
        System.out.print("main method: " + tt());
    }
}

运行结果:

  

yes
b>25: 111
finally
main method: 111

到这里,有很多人会感到纳闷:return之后函数不就结束了吗?怎么还是执行finally域内的语句?为了说明这个问题,我们先谈谈finally关键字。

finally的作用

关键字finally是try的关键字,一般与try成对出现,意味着无论try块是怎么退出的,finally子句中的代码总是会被执行的。因此,finally被用来执行无论是否有异常总是要运行的事件。

一般情况下,return表示了调用方法的结束,但finally是个例外。如果用System.exit()退出程序的话,当然finally就不会执行了。

参考资料

[1] Does finally always execute in Java?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66153.html

相关文章

  • 一段代码谈起——浅谈JavaIO接口

    摘要:缓冲输入流从被称为缓冲区的存储器区域读出数据仅当缓冲区是空时,本地输入才被调用。同样,缓冲输出流,将数据写入到缓存区,只有当缓冲区已满才调用本机输出。 :https://segmentfault.com/blog... 1.前言 前阵子休息天日常在寻找项目里不好的代码,看到了这样的一段代码: private Result sshSameExec(Session session,...

    pkwenda 评论0 收藏0
  • Java并发编程之指令重排序

    摘要:安全性小结我们上边介绍了原子性操作内存可见性以及指令重排序三个在多线程执行过程中会影响到安全性的问题。 指令重排序 如果说内存可见性问题已经让你抓狂了,那么下边的这个指令重排序的事儿估计就要骂娘了~这事儿还得从一段代码说起: public class Reordering { private static boolean flag; private static in...

    microcosm1994 评论0 收藏0
  • 这些Java面试题必须会-----鲁迅

    摘要:事实上,所谓的同步就是指阻塞式操作,而异步就是非阻塞式操作。中可以通过设值注入方法注入和构造器注入实现,推荐使用的方式为设值注入。 写在前面 春天来了,万物复苏的季节到了. 许多程序猿安奈不住生理需求,我要涨工资,我要跳槽. 毕竟金三银四嘛. 那么要从众多的面试者中获得求职机会,我们就要面对很多的面试题. 程序猿是最烦面试题的.面试的公司也烦,面试的人也烦. 但是没办法.面试的人鱼龙混...

    aristark 评论0 收藏0
  • “崩溃了?不可能,我全 Catch 住了” | Java 异常处理

    摘要:允许存在多个,用于针对不同的异常做不同的处理。表示程序可能需要捕获并且处理的异常。因此,我们应该尽可能的避免通过异常来处理正常的逻辑检查,这样可以确保不会因为发生异常而导致性能问题。异常表中的每一条记录,都代表了一个异常处理器。 showImg(https://segmentfault.com/img/remote/1460000017918154?w=640&h=100); show...

    stdying 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<