鴻蒙OS AutoCloseable

2022-04-28 16:32 更新

AutoCloseable

public interface AutoCloseable

一個(gè)在關(guān)閉之前可能持有資源(例如文件或套接字句柄)的對(duì)象。 AutoCloseable 對(duì)象的 close() 方法在退出資源規(guī)范標(biāo)頭中已為其聲明對(duì)象的 try-with-resources 塊時(shí)自動(dòng)調(diào)用。 這種構(gòu)造確保了及時(shí)釋放,避免了資源耗盡異常和錯(cuò)誤,否則可能會(huì)發(fā)生。

方法總結(jié)

修飾符和類型 方法 描述
void close() 關(guān)閉此資源,放棄任何基礎(chǔ)資源。

方法詳情

close

void close() throws Exception

關(guān)閉此資源,放棄任何基礎(chǔ)資源。此方法在由 try-with-resources 語(yǔ)句管理的對(duì)象上自動(dòng)調(diào)用。

雖然此接口方法被聲明為拋出異常,但強(qiáng)烈建議實(shí)現(xiàn)者聲明 close 方法的具體實(shí)現(xiàn)以拋出更具體的異常,或者如果關(guān)閉操作不會(huì)失敗,則根本不拋出異常。

關(guān)閉操作可能失敗的情況需要實(shí)施者仔細(xì)注意。強(qiáng)烈建議在拋出異常之前放棄底層資源并在內(nèi)部將資源標(biāo)記為已關(guān)閉。 close 方法不太可能被多次調(diào)用,因此可以確保及時(shí)釋放資源。此外,它減少了資源包裝或被另一個(gè)資源包裝時(shí)可能出現(xiàn)的問(wèn)題。

強(qiáng)烈建議此接口的實(shí)現(xiàn)者不要讓 close 方法拋出 InterruptedException。此異常與線程的中斷狀態(tài)交互,如果 InterruptedException 為 Throwable#addSuppressed,則可能發(fā)生運(yùn)行時(shí)錯(cuò)誤行為。更一般地說(shuō),如果抑制異常會(huì)導(dǎo)致問(wèn)題,則 AutoCloseable.close 方法不應(yīng)拋出它。

請(qǐng)注意,與 Closeable 的 close 方法不同,此 close 方法不需要是冪等的。換句話說(shuō),多次調(diào)用此 close 方法可能會(huì)產(chǎn)生一些可見(jiàn)的副作用,這與 Closeable.close 不同,如果多次調(diào)用則要求無(wú)效。但是,強(qiáng)烈建議此接口的實(shí)現(xiàn)者使他們的 close 方法具有冪等性。

Throws:

Throw名稱 Throw描述
Exception 如果無(wú)法關(guān)閉此資源
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)