阅读量:0
在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
块执行完毕后自动关闭。