Java中的finally字句

 关于try…catch中的finally子句:

  1.在finally子句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常,

finally子句必须和try一起出现,不能单独编写

  2.finally语句通常使用在哪些情况下?

       通常在finally语句中完成资源的释放/关闭。因为finally中的代码比较有保障。

      即使try语句块中的代码出现异常,finally中代码也会正常运行。

 import java.io.FileInputStream;

 import java.io.FileNotFoundException;

 import java.io.IOException;

 public class ExceptionTest10{

   public static void main(String[] args){

       FileInputStream fis = null; //声明位置放到try外面,这样在finally中才能用

       try{

          //创建输入流对象

          FileInputStream Fis = new FileInputStream("D:\\course\\01-开课\\学习方法.txt");

         

          String s = null;

          //这里一定会出现空指针异常!

          s.toSting();

       

         //流使用完需要关闭,因为流是占用资源的

         //即使以上程序出现异常,流也必须要关闭

        //放在这里有可能流管不了

        // fis.close();

       }catch(FileNotFoundException e){

         e.printStackTrace();

       }catch(IOException e){

          e.printStackTrace();

       }catch(NullPointerException e){

           e.printStackTrace();

       }finally{

           //流的关闭放在这里比较保险

          //finally中的代码是一定会执行的

         //即使try中出现了异常

           if(fis!=null){ //避免空指针异常!

                try{

                  //close方法有异常,采用捕捉的方式

                  fis.close();

               }catch(IOException e){

                   e.printStackTrace();

              }

         }

       }

    }

 }

finally语句

      放在finally中的语句块中的代码是一定执行的。

   public class ExceptionTest11{

     public static void main(String[] args){

          /*

            try和finally,没有catch可以吗?可以

               try不能单独使用

               try finally可以联合使用

            以下代码的执行顺序:

               先执行try…

               再执行finally….

               最后执行return(return语句只要执行方法必然结束)

          */

      try{

         System.out.println("try…");

         return;

      }finally{

        //finally中的语句会执行。能执行到

        System.out.println("finally…");

      }

       //这里不能写语句,因为这个代码是无法执行到的

      //System.out.println("Hello World");

    }

}

 public class ExceptionTest02{

    public static void main(String[] args){

       try{

          System.out.println("try…");

          //退出JVM

          System.exit(0); //退出JVM之后,finally语句中的代码就不执行了)

       }finally{

            System.out.println("finally…");

       }

   }

}

 final finally finalize有什么区别?

  final关键字

        final修饰的类无法继承

        final修饰的方法无法覆盖

        final修饰的变量不能重新赋值

  finally 关键字

        和try联合使用,finally语句块中的代码是必须执行的

  finalize标识符

        是一个Object类中的方法名

        这个方法是由垃圾回收器GC负责调用的。

  public class ExceptionTest14{

     public static void main(String[] args){

        //final是一个关键字,表示最终的,不变的

        final int i=100;

       

        //finally也是一个关键字,和try联合使用,使用在异常处理机制中

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

       try{

       }finally{

          System.out.println("finally…");

        }

       

       //finalize()是Object类中的一个方法,作为方法名出现。

       //所以finalize是标识符

       //finalize()方法是JVM的GC垃圾回收器负责调用

       Object obj;

  }

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值