96SEO 2026-02-19 12:19 15
resources语句确保在语句末尾关闭每个资源。

任何实现java.lang.AutoCloseable的对象#xff08;包括实现java.io.Closeable的所有对象#x…
resources语句是声明一个或多个资源的try语句。
资源是程序使用完后必须关闭的对象。
try
resources语句确保在语句末尾关闭每个资源。
任何实现java.lang.AutoCloseable的对象包括实现java.io.Closeable的所有对象都可以用作资源。
下面的示例从文件中读取第一行。
它使用BufferedReader的实例从文件中读取数据。
BufferedReader是一种资源必须在程序完成后关闭
}在本例中try-with-resources语句中声明的资源是BufferedReader。
声明语句出现在try关键字后面的括号中。
在Java
7和更高版本中类BufferedReader实现了接口Java.lang.AutoCloseable。
由于BufferedReader实例是在try
resource语句中声明的因此无论try语句是正常完成还是突然完成作为方法BufferedReader.readLine引发IOException的结果它都将被关闭。
在JavaSE7之前您可以使用finally块来确保关闭资源无论try语句是正常完成还是突然完成。
下面的示例使用finally块而不是try
readFirstLineFromFileWithFinallyBlock(String
}然而在本例中如果方法readLine和close都抛出异常则方法readFirstLineFromFileWithFinallyBlock抛出从finally块抛出的异常从try块引发的异常被抑制。
相反在示例readFirstLineFromFile中如果从try块和try
LineFrom抛出从try区块抛出的异常从try-with-resources块引发的异常被抑制。
在JavaSE7和更高版本中您可以检索被抑制的异常有关详细信息请参阅抑制的异常一节。
您可以在try-with-resources语句中声明一个或多个资源。
下面的示例检索压缩文件zipFileName中打包的文件的名称并创建包含这些文件名称的文本文件
writeToFileZipFileContents(String
java.nio.charset.StandardCharsets.US_ASCII;java.nio.file.Path
java.nio.file.Paths.get(outputFileName);//
java.util.zip.ZipFile(zipFileName);java.io.BufferedWriter
java.nio.file.Files.newBufferedWriter(outputFilePath,
System.getProperty(line.separator);String
((java.util.zip.ZipEntry)entries.nextElement()).getName()
newLine;writer.write(zipEntryName,
}在本例中try-with-resources语句包含两个由分号分隔的声明ZipFile和BufferedWriter。
当直接跟在它后面的代码块正常或由于异常而终止时BufferedWriter和ZipFile对象的close方法将按此顺序自动调用。
请注意资源的close方法是按其创建的相反顺序调用的。
resources语句自动关闭java.sql.statement对象
rs.getInt(TOTAL);System.out.println(coffeeName
{JDBCTutorialUtilities.printSQLException(e);}
}本例中使用的资源java.sql.Statement是JDBC
注意try-with-resources语句可以像普通的try语句一样具有catch和finally块。
在try-with-resources语句中任何catch或finally块都在声明的资源关闭后运行。
可以从与try-with-resources语句关联的代码块中引发异常。
在示例writeToFileZipFileContents中可以从try块引发异常并且当try
resources语句尝试关闭ZipFile和BufferedWriter对象时可以从该语句引发多达两个异常。
如果从try块引发异常并且从try
resources.语句引发的那些异常将被抑制并且该块引发的异常是由writeToFileZipFileContents方法引发的异常。
通过从try块引发的异常中调用Throwable.getSuppressed方法可以检索这些被抑制的异常。
请参阅AutoCloseable和Closeable接口的Javadoc以获取实现这两个接口之一的类的列表。
Closeable界面扩展了AutoCloseable接口。
Closeable接口的close方法抛出IOException类型的异常而AutoCloseble接口的closer方法则抛出Exception类的异常。
因此AutoCloseable接口的子类可以覆盖close方法的这种行为以抛出专门的异常如IOException或者根本没有异常。
前面的部分描述了如何在ListOfNumbers类中为writeList方法构造try、catch和finally代码块。
现在让我们遍历代码并研究可能发生的情况。
{System.out.println(PrintWriter
}如前所述该方法的try块具有三种不同的退出可能性这里有两个。
try语句中的代码失败并引发异常。
这可能是新FileWriter语句导致的IOException也可能是for循环中错误的索引值导致的IndexOutOfBoundsException。
一切成功try语句正常退出。
让我们看看在这两种退出可能性期间writeList方法中发生了什么。
由于多种原因创建FileWriter的语句可能会失败。
例如如果程序无法创建或写入所指示的文件FileWriter的构造函数将引发IOException。
当FileWriter抛出IOException时运行时系统立即停止执行try块正在执行的方法调用未完成。
然后运行时系统开始在方法调用堆栈的顶部搜索适当的异常处理程序。
在本例中当IOException发生时FileWriter构造函数位于调用堆栈的顶部。
然而FileWriter构造函数没有适当的异常处理程序因此运行时系统检查方法调用堆栈中的下一个方法——writeList方法。
writeList方法有两个异常处理程序一个用于IOException另一个用于IndexOutOfBoundsException。
运行时系统按照writeList的处理程序在try语句之后出现的顺序来检查它们。
第一个异常处理程序的参数是IndexOutOfBoundsException。
这与引发的异常类型不匹配因此运行时系统检查下一个异常处理程序-IOException。
这与引发的异常类型匹配因此运行时系统结束对适当异常处理程序的搜索。
既然运行库已经找到了适当的处理程序那么就执行该catch块中的代码。
在异常处理程序执行后运行时系统将控制传递给finally块。
finally块中的代码执行而不管它上面捕获到什么异常。
在这种情况下FileWriter从未打开也不需要关闭。
在finally块完成执行后程序继续执行finally模块之后的第一条语句。
这是ListOfNumbers程序的完整输出在引发IOException时出现。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback