java的finally_java的finally用法
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_java的finally用法相关推荐
- Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...
Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn 发布于:2012-09-15 ...
- Java 中的 XML:Java 文档模型的用法
Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...
- Java程序中Timer的用法
Java程序中Timer的用法 import java.io.IOException; import java.util.Timer; public class CheckTimer {/*** @p ...
- Java中Date各种相关用法
Java中Date各种相关用法 本文主要介绍Java中Date各种相关用法. AD: Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=C ...
- Java 动态代理介绍及用法
Java 动态代理介绍及用法 一,静态代理模式的特点 在之前的文章中 java代理模式 已经介绍里java里的(静态)代理模式 下面是上文静态代理类的例子: public class ProxyBea ...
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- java反斜杠\的用法
java反斜杠\的用法比较怪异,分为两种场景: 1. 正则表达式 匹配点(.) 或 {.[.(.?.$.^ .+和 * 这些特殊符号要要前加双斜框,表示字符类的时候也是用双斜杠譬如(\\s[空白符] ...
- bigdecimal 等于0_好程序员Java培训分享BigDecimal的用法
好程序员Java培训分享BigDecimal的用法,如果对数值结果精度要求很高,那么就可以使用BigDecimal,BigDecimal可以精准的控制小数点后面的数字 Java培训 1. 实例 Big ...
- Java中二维数组的用法(不定长二维数组)
Java中二维数组的用法(不定长二维数组),即每个第二维的数组长度不一样. 1>代码如下: package com.demo.test;public class Test {public Tes ...
最新文章
- 搭建mongodb分片
- Notepad++ 删除空白行的方法(转)
- 在Mysql中count(*)、count(1)与count(字段/列名)的详解—聚合函数count
- html中文字描边效果代码,css如何设置文字描边效果?
- 线程5-生产者消费者模式(线程通信)
- ASP.NET对验证控件的一些整理(一)
- Windows下Mysql定时备份的实现
- k8s架构以及相关概念普及
- PHP之JWT接口鉴权(二) 自定义错误异常
- 职场 软件实施工程师的地位以及发展前景
- spring-mvc集成urule
- deepin驱动精灵_Deepin 20 Beta X64官方正式版(64位)
- Spring bean销毁的过程
- java类图与代码实例
- 计算机图形学-颜色科学基础
- java计算限流工具
- ATmega32U4 芯片介绍 相关开源应用
- 键盘锁定/键盘长按才有反应
- js的遍历器(Iterator)
- GPU芯片海飞科联合创始人兼总裁姚飞到访极客天成ScaleFlash
热门文章
- php 微信公众号 记录数据库,PHP构建微信公众号关键字数据库多图文回复
- SQLite学习手册(实例代码一)
- 香帅的北大金融学课笔记16 -- 公司决策
- python3精要(10)-while,for
- 【深度学习】90.94%准确率!谷歌刷新ImageNet新纪录!Model soups:提高模型的准确性和稳健性...
- 【Python】疯狂的加速函数!
- 【推荐系统】基于知识图谱的推荐系统总结
- 推荐特征筛选偷懒神器-M3USelector
- 【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践
- 与优秀的人在一起进步:我发起的“乐学”分享活动