深入浅析java中finally的用法

作者:hongge372 时间:2023-06-14 00:03:35 

finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。

之前在写爬虫的时候数据库连接的频率很高,有时候数据处理的不好,sql报错后,抛出异常但后边的数据库连接没有断开。导致最后数据库连接数过大,不让再连接了(因为是个人库,所以直接重启了一下)。这个释放数据库连接的操作就可以用finally来进行。

首先看一下没有用finally的代码(不能直接运行,能看懂什么意思就行)


Connection conn;
Statement stmt;
try{
conn = DriverManager.getConnection(url,userName,password);
stmt = conn.createStatement;
String sql = "sql";//需要执行的sql
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}

在程序正常运行的时候,没有异常抛出,没有问题。

但在程序抛出异常(sql出错了),try里面的语句不执行了直接被执行catch里面的语句了,就造成了一个数据库连接没有正常关闭。数据量如果大起来,数据库的最大连接数到达上限,就不再允许创建新的连接了。

然后finally的用处现在就能体现出来了


Connection conn = null;
Statement stmt = null;
try {
conn = DriverManager.getConnection(url,userName,password);
stmt = conn.createStatement;
String sql = "sql";//需要执行的sql
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(stmt! = NULL){
stmt.close();
}
if(conn! = NULL){
conn.close();
}
}

这样即使sql运行出错,抛出了异常,在最后的finally代码中再进行一次数据库连接的判断,就可以保证数据库连接资源不会被平白无故的浪费掉。

以上所述是小编给大家介绍的java中finally的用法网站的支持!

来源:https://blog.csdn.net/u010029439/article/details/80551857

标签:java,finally,用法
0
投稿

猜你喜欢

  • Kotlin协程开发之Flow的融合与Channel容量及溢出策略介绍

    2023-07-02 23:52:01
  • 纯Java代码实现流星划过天空

    2022-06-01 12:12:35
  • SpringBoot多数据源切换实现代码(Mybaitis)

    2021-11-07 11:15:50
  • Android RecyclerView网格布局示例解析

    2023-03-04 00:49:44
  • Java面试synchronized偏向锁后hashcode存址

    2023-08-09 09:15:06
  • Android Studio3.0新特性及安装图文教程

    2021-06-21 02:11:48
  • SpringBoot自动配置原理分析

    2022-03-02 17:42:51
  • WinForm导出文件为Word、Excel、文本文件的方法

    2022-07-08 20:07:16
  • C#获取路由器外网IP,MAC地址的实现代码

    2021-07-03 06:01:32
  • 全面理解Java类和对象

    2021-11-17 11:11:50
  • Spring+MyBatis实现数据读写分离的实例代码

    2021-08-31 04:34:48
  • Java ExcutorService优雅关闭方式解析

    2023-11-25 19:21:48
  • Java详解数据类型的定义与使用

    2023-09-29 01:35:20
  • Android调用google地图生成路线图实现代码

    2023-06-04 09:37:25
  • Android解决所有双击优化的问题

    2023-07-27 09:07:03
  • Java基础教程之包(package)

    2021-11-01 01:53:19
  • kafka消费不到数据的排查过程

    2023-11-14 04:35:30
  • JAVA swing布局管理器实例解析

    2022-01-11 05:05:15
  • Java数据结构之红黑树的真正理解

    2022-07-16 01:36:16
  • SpringBoot中@ConfigurationProperties 配置绑定

    2023-04-07 04:02:57
  • asp之家 软件编程 m.aspxhome.com