finally用法包含哪些
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。
之前在写爬虫的时候数据库连接的频率很高,有时候数据处理的不好,sql报错后,抛出异常但后边的数据库连接没有断开。导致最后数据库连接数过大,不让再连接了(因为是个人库,所以直接重启了一下)。这个释放数据库连接的操作就可以用finally来进行。
首先看一下没有用finally的代码(不能直接运行,能看懂什么意思就行)
Connection conn; Statement stmt; try{conn = DriverManager.getConnection(url,userName,password);stmt = conn.createStatement; String sql = "sql";//需要执行的sqlstmt.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代码中再进行一次数据库连接的判断,就可以保证数据库连接资源不会被平白无故的浪费掉。
finally用法包含哪些相关推荐
- parser.add_argument 参数用法 包含metavar
https://docs.python.org/zh-cn/3/library/argparse.html
- NotePad++的查找的用法(包含正则表达式)
notepad++的查找 1.普通查找 普通查找很简单(快捷键是ctrl+f) 替换的(快捷键是ctrl+h) 在文件中查找(快捷键是ctrl+shift+f):顾名思义可以不打开文件进行查找和替换 ...
- string s.substr()的用法
string s.substr()的用法 包含头文件 s . substr( pos , len ) ; 从初始位置 pos 开始读取长度为 len 个字符 #include <iostream ...
- Spring系列(三):@ComponentScan注解用法介绍
今天给大家分享Spring中@ComponentScan注解的用法,希望对大家能有所帮助! 1.@ComponentScan注解的作用 @ComponentScan注解一般和@Configuratio ...
- PL/SQL之JOB用法 (定时跑数据)
转载自 PL/SQL之JOB用法 (定时跑数据) 一.DBMS_Job包的用法 包含以下子过程: Broken()过程. change()过程. Interv ...
- C++11 function和bind用法
目录 function和bind用法 function的用法 Demo bind用法 Demo C/C++Linux服务器开发/后台架构师[零声教育]-学习视频教程-腾讯课堂 function和bin ...
- c语言pair的用法,C++ std::pair的用法
1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当一个函数需要返回2个数据的时候, ...
- 关于ceph源码 backtrace 打印函数调用栈
当集中精力看一个问题的时候,时间久了就会有这样一个状态,天空飘来五个字,那都不算事 ceph源码庞大的体量以及复杂的设计让很多人望而却步,尤其是大量的纯虚函数更是让读者迷失在代码的海洋,这个时候函数调 ...
- ajax提交相对路径报错,ajax提交请求为啥url要用这个函数encodeURI
参考如下: 如果你是通过form提交的,那就不需要用这个了.但是如果是你使用url的方式 例如:ajax提交到后台的,就需要对url进行encodeURI编码, 否则,会导致后台出现各种乱码,不加en ...
最新文章
- 中国大陆光伏中上游触底反弹 台湾省亦酝酿涨势
- 不懂SOLID,GRASP这些软件开发原则!写出来的代码都是垃圾!
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)
- STM32F407之搭建工程
- 字符串周期--hdu 3746 Cyclic Nacklace
- springboot整合shiro-关于登出时,redis中缓存没有清理干净的问题
- MySQL基础---增删改查语法
- 工作90:富文本编辑器使用篇wangedit
- Linux下SVN服务器的搭建
- 【Clickhouse】Clickhouse TTL 数据的存活时间
- gulp自己主动化任务脚本在HybridApp开发中的使用
- php常用库函数(二)
- 派生类构造的时候一定要调用_分手的时候,一定要好好说再见
- 利用数据细分目标客户群
- dnslog盲打学习
- IDEA文件编码格式修改为UTF-8
- vue项目启动后,页面显示空白
- php 求幂数,C 笔记九 求幂函数
- 单核cpu多线程有必要吗?
- 国密SM4,layui前端 和.net core后台 加密解密 .net加密解密