try-with-resources
是 Java 7 中引入的一个语言特性,它用于自动释放资源(如文件、网络连接等)以避免资源泄漏。
在 try-with-resources
中,你可以在 try
关键字后面的括号中声明一个或多个资源,这些资源必须实现了 AutoCloseable
或者 Closeable
接口。在 try
块执行结束时,Java 会自动关闭这些资源,而无需手动调用 close()
方法。
这个特性简化了资源管理的代码,同时也确保了资源的正确释放。
示例:
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
和 FileReader
都实现了 AutoCloseable
接口,因此可以在 try-with-resources
中使用。在 try
块结束时,会自动关闭这两个资源。
这个特性是在 Java 7 中引入的,目的是简化资源管理的代码,并确保资源在使用完毕后能够被正确地释放,避免了手动调用 close()
方法的繁琐工作,同时也降低了资源泄漏的风险。
需要注意的是,资源的关闭顺序是按照声明的顺序倒序执行的,即先声明的资源会后关闭。如果在关闭资源时发生异常,它们会被抑制,而不会覆盖原始的异常。这使得在资源关闭时发生的异常能够得到处理而不会影响到原始的异常信息。