当前位置: 首页 > news >正文

苏州网站建设专业的公司网络营销的招聘信息

苏州网站建设专业的公司,网络营销的招聘信息,长春网站建设公司排名前十,找生意做那个网站靠谱一、Try with resources语句 try with resources语句是声明一个或多个资源的try语句。资源是程序使用完后必须关闭的对象。try with resources语句确保在语句末尾关闭每个资源。任何实现java.lang.AutoCloseable的对象(包括实现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块具有三种不同的退出可能性;这里有两个。

  1. try语句中的代码失败并引发异常。这可能是新FileWriter语句导致的IOException,也可能是for循环中错误的索引值导致的IndexOutOfBoundsException。
  2. 一切成功,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

http://www.tj-hxxt.cn/news/4627.html

相关文章:

  • 金坛网站建设网络服务器配置与管理
  • 网站开发 法律声明软文代写自助发稿平台
  • 免费可以做旅游海报 的网站百度竞价运营
  • 网络营销渠道名词解释宁波seo外包推广软件
  • 人人秀h5制作软件seo博客教程
  • 顺德做网站公司哪家好南宁seo外包平台
  • 兴文县建设工程网站百度竞价排名的优缺点
  • 做企业网站 长春网址缩短
  • 安国市城乡建设局网站搜索引擎的三个技巧
  • 广州荔湾做网站爱站seo工具包
  • 做代码的网站推广找客户平台
  • 美国做爰直播网站网站注册查询
  • c语言精品课程网站开发中国制造网
  • 织梦可以做哪些类型型网站seo对网店推广的作用有哪些
  • 如何建个人网站教程关键词资源
  • 给网站做镜像seo网站推广怎么做
  • 企业网站如何做自然搜索怎么进行推广
  • 德州建设街小学网站网络推广seo怎么弄
  • 网站建设应该有什么特点平台推广方式方法是什么
  • 做网站的图片搜索引擎营销的主要方式有
  • 网站导航营销的优势昆明长尾词seo怎么优化
  • 抚州做网站公司哪家好重庆百度搜索优化
  • 国外优秀设计网站大全网址搜索
  • 公司怎么申请免费做网站沈阳网站seo排名公司
  • 视频弹幕网站怎么做的电商网站建设公司
  • wordpress网站出现域名加两个双引号的图片死链接百度客服工作内容
  • 网站免费建站2如何建一个自己的网站
  • 做室内3d设计的网站seo排名软件哪个好用
  • 齐齐哈尔建设局网站首页今日新闻大事件
  • 如何做微信官方网站百度推广关键词怎么优化