在Java 7及更高版本中,try-with-resources
語句是一種自動管理資源的方式,它可以自動關閉實現了AutoCloseable
接口的資源。這種語句非常適合處理文件、數據庫連接等需要打開和關閉的資源。
使用try-with-resources
語句的基本語法如下:
try (ResourceType resourceName = new ResourceType()) {
// 使用資源的代碼
} catch (ExceptionType e) {
// 處理異常的代碼
} finally {
// 其他最終執行的代碼
}
在這個結構中,ResourceType
是實現了AutoCloseable
接口的類型,resourceName
是該類型的變量名。在try
塊內,你可以使用這個資源。當try
塊執行完畢時(無論是正常結束還是由于異常而結束),resourceName
會被自動關閉。
下面是一個使用try-with-resources
語句處理文件的例子:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在這個例子中,BufferedReader
實現了AutoCloseable
接口,所以我們可以在try
語句中聲明并使用它。當try
塊執行完畢時,BufferedReader
會被自動關閉,無需顯式調用close()
方法。
注意,try-with-resources
語句也支持同時處理多個資源,只需將它們用分號(;
)分隔開即可。例如:
try (BufferedReader br1 = new BufferedReader(new FileReader("file1.txt"));
BufferedReader br2 = new BufferedReader(new FileReader("file2.txt"))) {
// 使用兩個BufferedReader的代碼
} catch (IOException e) {
e.printStackTrace();
}
在這個例子中,兩個BufferedReader
都會在try
塊執行完畢后自動關閉。