国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

深入淺析java中finally的用法

2024-07-14 08:41:08
字體:
來源:轉載
供稿:網友

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的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赣州市| 龙胜| 北辰区| 南部县| 临高县| 博兴县| 兴国县| 黄山市| 扶风县| 仪征市| 威远县| 丰都县| 齐齐哈尔市| 通城县| 思南县| 沙坪坝区| 绥棱县| 尚志市| 锡林郭勒盟| 溧水县| 晋中市| 桃园市| 通江县| 泰和县| 民乐县| 凤凰县| 武平县| 元谋县| 东莞市| 曲周县| 富民县| 崇文区| 原阳县| 孝感市| 五莲县| 牡丹江市| 吴堡县| 冕宁县| 台安县| 吉安市| 上高县|