当前位置:
首页 >
java学习(127):finally语句
发布时间:2023/12/10
69
豆豆
生活随笔
收集整理的这篇文章主要介绍了
java学习(127):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";//需要执行的sqlstmt.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学习(127):finally语句的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: kali扫描内网ip_Metasploi
- 下一篇: volatile指令重排_有多少人面试栽