91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中怎么使用try-with-resource機制關閉連接

發布時間:2021-08-02 17:39:12 來源:億速云 閱讀:285 作者:chen 欄目:開發技術

本篇內容主要講解“java中怎么使用try-with-resource機制關閉連接”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java中怎么使用try-with-resource機制關閉連接”吧!

使用try-with-resource機制關閉連接

JAVA的一大特性就是JVM會對內部資源實現自動回收

即自動GC,給開發者帶來了極大的便利。但是JVM對外部資源的引用卻無法自動回收,例如數據庫連接,網絡連接以及輸入輸出IO流等,這些連接就需要我們手動去關閉,不然會導致外部資源泄露,連接池溢出以及文件被異常占用等。

傳統的手動釋放外部資源一般放在

try{}catch(){}finally{}機制的finally代碼塊中,因為finally代碼塊中語句是肯定會被執行的,即保證了外部資源最后一定會被釋放。同時考慮到finally代碼塊中也有可能出現異常,finally代碼塊中也有一個try{}catch(){},這種寫法是經典的傳統釋放外部資源方法,顯然是非常繁瑣的。

java中怎么使用try-with-resource機制關閉連接

JDK1.7之后有了try-with-resource處理機制

首先被自動關閉的資源需要實現Closeable或者AutoCloseable接口,因為只有實現了這兩個接口才可以自動調用close()方法去自動關閉資源。寫法為try(){}catch(){},將要關閉的外部資源在try()中創建,catch()捕獲處理異常。

其實try-with-resource機制是一種語法糖,其底層實現原理仍然是try{}catch(){}finally{}寫法,不過在catch(){}代碼塊中有一個addSuppressed()方法,即異常抑制方法。

如果業務處理和關閉連接都出現了異常,業務處理的異常會抑制關閉連接的異常,只拋出處理中的異常,仍然可以通過getSuppressed()方法獲得關閉連接的異常。

java中怎么使用try-with-resource機制關閉連接

和傳統的try{}catch(){}finally{}機制相比,try-with-resource處理機制有了這個異常抑制方法就是幫助我們簡化了關閉連接時出現異常的處理。

try-with-resource使用時遇到的問題

java 1.7之后 增加了 try-wit-resource的語法糖

大概的用法就是在try中聲明一個或者多個的流,會在try塊代碼執行完成后自動關閉流,不用再寫finally進行手都關閉。

try (InputStream is1 = ...;
     InputStream is2 = ...;) {
    //do something
} catch{
}

于是我就在項目中想改成這種寫法,但是在改的過程中遇到了一些問題。我的代碼中需要對聲明過后的流再賦值,但是用這樣的寫法一直會報錯

代碼大概是這樣的:

java中怎么使用try-with-resource機制關閉連接

此時會編譯出錯:

The resource is1 of a try-with-resources statement cannot be assigned;

報錯的原因是:

try-with-source中聲明的變量無法被更改。但是我很奇怪這是為什么,上網搜了沒有搜到,于是去找了一下官方文檔。官方文檔中有一段這樣的描述:

java中怎么使用try-with-resource機制關閉連接

It is a compile-time error if final appears more than once as a modifier for each variable declared in a resource specification. A variable declared in a resource specification is implicitly declared final (§4.12.4) if it is not explicitly declared final.

意思就是,try-with-resource中聲明的變量會隱式的加上final 關鍵字,所以無法再進行賦值。但是至于為什么這么設計,我暫時沒找到答案。

到此,相信大家對“java中怎么使用try-with-resource機制關閉連接”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣威市| 嵊泗县| 永胜县| 扎赉特旗| 如皋市| 临猗县| 城固县| 丰县| 合川市| 黑龙江省| 武威市| 丽水市| 英山县| 留坝县| 河津市| 香河县| 沾益县| 云阳县| 渝北区| 麻栗坡县| 兴和县| 北京市| 固安县| 山西省| 林西县| 玉门市| 柳州市| 嵊泗县| 班玛县| 海盐县| 长治县| 沙洋县| 通州区| 肥城市| 方正县| 江油市| 太谷县| 五莲县| 和平县| 赞皇县| 南汇区|