我的世界寻找建筑网站wap网站价格
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:14
当前位置: 首页 > news >正文
我的世界寻找建筑网站,wap网站价格,芜湖公司企业排名,网站开发职位要求一、Try with resources语句 try with resources语句是声明一个或多个资源的try语句。资源是程序使用完后必须关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象#xff08;包括实现java.io.Closeable的所有对象#x… 一、Try with resources语句 try with resources语句是声明一个或多个资源的try语句。资源是程序使用完后必须关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象包括实现java.io.Closeable的所有对象都可以用作资源。 下面的示例从文件中读取第一行。它使用BufferedReader的实例从文件中读取数据。BufferedReader是一种资源必须在程序完成后关闭 static String readFirstLineFromFile(String path) throws IOException {try (BufferedReader br new BufferedReader(new FileReader(path))) {return br.readLine();} }在本例中try-with-resources语句中声明的资源是BufferedReader。声明语句出现在try关键字后面的括号中。在Java SE 7和更高版本中类BufferedReader实现了接口Java.lang.AutoCloseable。由于BufferedReader实例是在try with resource语句中声明的因此无论try语句是正常完成还是突然完成作为方法BufferedReader.readLine引发IOException的结果它都将被关闭。 在JavaSE7之前您可以使用finally块来确保关闭资源无论try语句是正常完成还是突然完成。下面的示例使用finally块而不是try with resources语句 static String readFirstLineFromFileWithFinallyBlock(String path)throws IOException {BufferedReader br new BufferedReader(new FileReader(path));try {return br.readLine();} finally {br.close();} }然而在本例中如果方法readLine和close都抛出异常则方法readFirstLineFromFileWithFinallyBlock抛出从finally块抛出的异常从try块引发的异常被抑制。相反在示例readFirstLineFromFile中如果从try块和try with resources语句中抛出异常则方法readFirst LineFrom抛出从try区块抛出的异常从try-with-resources块引发的异常被抑制。在JavaSE7和更高版本中您可以检索被抑制的异常有关详细信息请参阅抑制的异常一节。 您可以在try-with-resources语句中声明一个或多个资源。下面的示例检索压缩文件zipFileName中打包的文件的名称并创建包含这些文件名称的文本文件 public static void writeToFileZipFileContents(String zipFileName,String outputFileName)throws java.io.IOException {java.nio.charset.Charset charset java.nio.charset.StandardCharsets.US_ASCII;java.nio.file.Path outputFilePath java.nio.file.Paths.get(outputFileName);// Open zip file and create output file with// try-with-resources statementtry (java.util.zip.ZipFile zf new java.util.zip.ZipFile(zipFileName);java.io.BufferedWriter writer java.nio.file.Files.newBufferedWriter(outputFilePath, charset)) {// Enumerate each entryfor (java.util.Enumeration entries zf.entries(); entries.hasMoreElements();) {// Get the entry name and write it to the output fileString newLine System.getProperty(line.separator);String zipEntryName ((java.util.zip.ZipEntry)entries.nextElement()).getName() newLine;writer.write(zipEntryName, 0, zipEntryName.length());}} }在本例中try-with-resources语句包含两个由分号分隔的声明ZipFile和BufferedWriter。当直接跟在它后面的代码块正常或由于异常而终止时BufferedWriter和ZipFile对象的close方法将按此顺序自动调用。请注意资源的close方法是按其创建的相反顺序调用的。 下面的示例使用try with resources语句自动关闭java.sql.statement对象 public static void viewTable(Connection con) throws SQLException {String query select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES;try (Statement stmt con.createStatement()) {ResultSet rs stmt.executeQuery(query);while (rs.next()) {String coffeeName rs.getString(COF_NAME);int supplierID rs.getInt(SUP_ID);float price rs.getFloat(PRICE);int sales rs.getInt(SALES);int total rs.getInt(TOTAL);System.out.println(coffeeName , supplierID , price , sales , total);}} catch (SQLException e) {JDBCTutorialUtilities.printSQLException(e);} }本例中使用的资源java.sql.Statement是JDBC 4.1和更高版本API的一部分。 注意try-with-resources语句可以像普通的try语句一样具有catch和finally块。在try-with-resources语句中任何catch或finally块都在声明的资源关闭后运行。 二、Suppressed Exceptions 可以从与try-with-resources语句关联的代码块中引发异常。在示例writeToFileZipFileContents中可以从try块引发异常并且当try with resources语句尝试关闭ZipFile和BufferedWriter对象时可以从该语句引发多达两个异常。如果从try块引发异常并且从try with resources语句引发一个或多个异常则从try with resources.语句引发的那些异常将被抑制并且该块引发的异常是由writeToFileZipFileContents方法引发的异常。通过从try块引发的异常中调用Throwable.getSuppressed方法可以检索这些被抑制的异常。 三、实现自动关闭或可关闭接口的类 请参阅AutoCloseable和Closeable接口的Javadoc以获取实现这两个接口之一的类的列表。Closeable界面扩展了AutoCloseable接口。Closeable接口的close方法抛出IOException类型的异常而AutoCloseble接口的closer方法则抛出Exception类的异常。因此AutoCloseable接口的子类可以覆盖close方法的这种行为以抛出专门的异常如IOException或者根本没有异常。 四、将所有内容放在一起 前面的部分描述了如何在ListOfNumbers类中为writeList方法构造try、catch和finally代码块。现在让我们遍历代码并研究可能发生的情况。 将所有组件放在一起时writeList方法如下所示。 public void writeList() {PrintWriter out null;try {System.out.println(Entering try statement);out new PrintWriter(new FileWriter(OutFile.txt));for (int i 0; i SIZE; i) {out.println(Value at: i list.get(i));}} catch (IndexOutOfBoundsException e) {System.err.println(Caught IndexOutOfBoundsException: e.getMessage());} catch (IOException e) {System.err.println(Caught IOException: e.getMessage());} finally {if (out ! null) {System.out.println(Closing PrintWriter);out.close();}else {System.out.println(PrintWriter not open);}} }如前所述该方法的try块具有三种不同的退出可能性这里有两个。 try语句中的代码失败并引发异常。这可能是新FileWriter语句导致的IOException也可能是for循环中错误的索引值导致的IndexOutOfBoundsException。一切成功try语句正常退出。 让我们看看在这两种退出可能性期间writeList方法中发生了什么。 1、场景1发生异常 由于多种原因创建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时出现。 Entering try statement Caught IOException: OutFile.txt PrintWriter not open
- 上一篇: 我的世界是怎么做的视频网站建站系统开发
- 下一篇: 我的世界寻找建筑网站多个 wordpress
相关文章
-
我的世界是怎么做的视频网站建站系统开发
我的世界是怎么做的视频网站建站系统开发
- 技术栈
- 2026年04月20日
-
我的世界服务器网站建设网站空间月流量
我的世界服务器网站建设网站空间月流量
- 技术栈
- 2026年04月20日
-
我的三次做网站的经历网站建设与维护税率
我的三次做网站的经历网站建设与维护税率
- 技术栈
- 2026年04月20日
-
我的世界寻找建筑网站多个 wordpress
我的世界寻找建筑网站多个 wordpress
- 技术栈
- 2026年04月20日
-
我的世界做壁纸网站北京有名气的设计事务所
我的世界做壁纸网站北京有名气的设计事务所
- 技术栈
- 2026年04月20日
-
我的网站百度找不到了网络营销的常见方式有哪些
我的网站百度找不到了网络营销的常见方式有哪些
- 技术栈
- 2026年04月20日
