• Java连载64-finally语法及其注意事项


    一、finally语句块

    1.注意点:

    (1)finally语句块可以直接和try语句块联合使用。try...finally....

    (2)try.....catch.....finally也可以执行;

    (3)在finally语句块中的代码是一定会执行的。

    package com.bjpowernode.java_learning;
    
    import java.io.*;
    
    ​
    
    public class D64_1_ {
    
      public static void main(String[] args) throws FileNotFoundException{
    
        try {
    
          System.out.println("ABC");
    
        }finally {
    
          System.out.println("jdfoaij");
    
        }
    
       
    
        try {
    
    //      System.exit(0);//这句话代表退出Java虚拟机
    
          FileInputStream f1 = new FileInputStream("jfdioa");
    
          //下面这个语句不会执行
    
          System.out.println("ABC");
    
        }finally {
    
          //无论try里面的语句是否报错,下面的语句都会执行
    
          System.out.println("jfaio");
    
         
    
        }
    
      }
    
    ​
    
    }

    2.深入finally语句块

     
    
    public class D64_1_ {
    
      public static void main(String[] args) throws FileNotFoundException{
    
        int i = m1();
    
        System.out.println(i);
    
     
    
      }
    
      public static int m1() {
    
        int i = 10;
    
        try {
    
          return i;
    
        }finally {
    
          i++;
    
          System.out.println("m1的i=" + i);//11
    
        }
    
        /*
    
         * 以上代码的执行原理,
    
         * int i = 10;
    
         * trt{
    
         *   int temp = i;
    
         *   return temp;
    
         * }finally{
    
         *   i++;
    
         *   System.out.println("m1的i=" + i);//11
    
         * }
    
         */
    
      }
    
    }

    3.fianlly语句块是一定会执行的,所以通常在程序中,为了保证某个资源一定会被释放,所以一般会在finally语句块中中释放资源。

    package com.bjpowernode.java_learning;
    
    import java.io.*;
    
    ​
    
    public class D64_1_ {
    
      public static void main(String[] args) throws FileNotFoundException{
    
        FileInputStream f2 = null;
    
        try {
    
          f2 = new FileInputStream("jfoda");
    
        }catch(FileNotFoundException e){
    
          e.printStackTrace();
    
        }finally {
    
          if(f2 != null) {
    
            try {
    
              f2.close();
    
            }catch(IOException e) {
    
              e.printStackTrace();
    
            }
    
    ​
    
          }
    
        }
    
      }
    
    }

    二、final、finalize和finally之间的区别

    final是一个Java关键字,用它来修饰的变量,不可以重复在被赋值;用它来修饰的成员函数,不可以重新被覆盖。

    finalize()是Object中的方法,在垃圾回收之前会自动调用这个方法​。

    finally是异常处理机制的一个语法结构。

    三者其实没有什么联系,是不相同的​语法。

    三、源码:

    D64_1_FinallySentenceBlock.java​

    https://github.com/ruigege66/Java/blob/master/D64_1_FinallySentenceBlock.java

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

     

  • 相关阅读:
    css3与gpu加速
    前端集成解决方案小结
    body内html标签的选用
    在win8下快速搭建angularjs测试环境以及可能遇到的问题
    javascript快速排序
    Sublime Text2配置python环境
    python学习第一天
    开机自检
    各种排序算法及c语言实现
    算法表示
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12089214.html
Copyright © 2020-2023  润新知