• final、finally和finalize(二)


    finally adv. 最后;终于;决定性地

    所以 finally 一般用来在程序的末尾进行释放资源,对异常处理的补充。

    只要 try 执行了,finally 块里的语句就一定会执行,并且在 return 之前执行,但是这里有个条件就是虚拟机没有退出。


      

    例如:

    try {
                System.out.println("start");
                return;
            } finally {
                System.out.println("end");
            }

    程序输出:

    start

    end


      

    但是如果把程序改成这样:

    try {
                System.out.println("start");
                // return;
                System.exit(0);
            } finally {
                System.out.println("end");
            }

    则程序输出start 后直接退出。


      

    这时候可能有些和我一样的菜鸟第一次见到这时会有些疑问,不是说finally 里的语句总是会执行么,怎么没执行呢?

    答案就是虽然java规定是这样的,无论是否发生异常finally里的语句都会执行,但是就像树木生长要依赖于土地一样,java类的运行也要依赖于java虚拟机的存在,当执行第5行System.exit(0); 时,导致虚拟机直接退出了,相当于树木没有了赖以生存的土壤,或者说程序在执行的时候突然没有电了,那 finally 的本事再大,里边的语句也不会执行啊。


      

    另外,有try 不一定就要有 catch ,只有try 和 finally 的情况下也不是报错的,只是抛出异常时没有捕获而已。

  • 相关阅读:
    Django的认证系统
    Django 中间件
    Django Form和ModelForm组件
    AJAX
    Django中ORM介绍和字段及字段参数
    Django ORM那些相关操作
    Python中应该使用%还是format来格式化字符串?
    Cookie、Session和自定义分页
    ORM版学员管理系统3
    ORM版学员管理系统2
  • 原文地址:https://www.cnblogs.com/yuxiaoqi/p/2711137.html
Copyright © 2020-2023  润新知