在處理IO的代碼中,我們會使用大量的try...catch()...finally...文法,其中會在finally進行IO的close操作,寫過python的都知道,這種操作可以使用try-with-resources操作,幸運的是Java7也有了此特性,比如之前的文法:
而使用try-with-resources文法,則可以簡化為:
但是使用try-with-resources的時候還是由可能造成資源沒有關閉,比如在try()中有錯誤時,比如:
比如檔案存在,但卻不是寫入的對象序列,是以會造成不正常打開,此時ObjectInputStream不能正确初始化,且不會關閉,是以正确的方式是分開資源變量:
TWR特性是使用了java7的新的接口AutoCloseable,可以使用try-with-resources文法的資源必須實作該接口。而Closeable繼承了AutoCloseable,是以我們常用的資源類都可以使用。