当前位置: 首页 > news >正文

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;

  }

相关文章:

  • 006.Oracle事务处理
  • python爬虫如何写,有哪些成功爬取的案例
  • pytest -- 进阶使用详解
  • iproute 随手记
  • Spring Boot程序的打包与运行:构建高效部署流程
  • HarmonyOS—开发环境诊断的功能
  • MybatisPlus框架入门级理解
  • 安捷伦N5244A网络分析仪43.5GHz
  • 【PHP】PHP利用ffmreg获取音频、视频的详细信息
  • tomcat与servlet
  • 【Linux】信号量基于环形队列的生产消费模型
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • 【办公软件篇】软件启动器Lucy打造自己的工具箱
  • vue解决部署文件缓存方式
  • 怎样陪孩子度过一个充实的假期?
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 简单基于spring的redis配置(单机和集群模式)
  • 深度解析利用ES6进行Promise封装总结
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 微信小程序实战练习(仿五洲到家微信版)
  • 怎样选择前端框架
  • Hibernate主键生成策略及选择
  • 阿里云移动端播放器高级功能介绍
  • #define用法
  • #stm32整理(一)flash读写
  • #数学建模# 线性规划问题的Matlab求解
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (MATLAB)第五章-矩阵运算
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (南京观海微电子)——I3C协议介绍
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)fock函数详解
  • (转)socket Aio demo
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core 6 redis操作类
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net连接MySQL的方法
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net中间语言BeforeFieldInit
  • /proc/stat文件详解(翻译)
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @NestedConfigurationProperty 注解用法
  • @RequestMapping用法详解
  • [100天算法】-目标和(day 79)
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!