日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java7新特性之Try-with-resources statement

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java7新特性之Try-with-resources statement 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

try-with-resources 語句是一個聲明了1到多個資源的try語句。資源是指這個try執行完成后必需close掉的對象,比如connection, resultset等。

try-with-resources 語句會確保在try語句結束時關閉所有資源。實現了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();

  • }

  • }

  • 在這個例子里面,資源是一個BufferedReader, 聲明語句是在try后面的括號內。在java7或更晚的版本中,BufferedReader實現了java.lang.AutoCloseable接口。由于BufferedReader被定義在try-with-resource 語句中,因此不管try代碼塊是正常完成或是出現異常,這個BufferedReader?的實例都將被關閉。

    在java7之前的版本中,你可以使用finally 代碼塊來確保資源被關閉(不管try正常完成還是出現異常)。下面是使用finally的例子:

  • static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException {

  • BufferedReader br = new BufferedReader(new FileReader(path));

  • try {

  • return br.readLine();

  • } finally {

  • if (br != null) br.close();

  • }

  • }

  • ?

    然而,在這里例子里面,如果readLine方法和close方法都拋出了異常,readFirstLineFromFileWithFinallyBlock?方法只能拋出finally代碼塊里面的異常,也就是close方法出現的異常,try代碼塊里面的異常被禁止;相反,在readFirstLineFromFile這個例子中,如果try?代碼塊和try-with-resources 語句都出現異常,readFirstLineFromFile?方法將出拋出來自try代碼塊的異常,從try-with-resources拋出的異常被禁止。在java7或更晚的版本中,我們可以獲取到這些被禁止的異常。

    你可以聲明1到多個資源,看下面的例子

  • public static void writeToFileZipFileContents(String zipFileName, String outputFileName)

  • throws java.io.IOException {

  • ?
  • java.nio.charset.Charset charset = java.nio.charset.Charset.forName("US-ASCII");

  • java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName);

  • ?
  • // Open zip file and create output file with try-with-resources statement

  • ?
  • try (

  • java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);

  • java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)

  • ) {

  • ?
  • // Enumerate each entry

  • ?
  • for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {

  • ?
  • // Get the entry name and write it to the output file

  • ?
  • String newLine = System.getProperty("line.separator");

  • String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine;

  • writer.write(zipEntryName, 0, zipEntryName.length());

  • }

  • }

  • }


  • ?

    在這個例子中,有兩個資源,資源之間用分號隔開。資源被關閉的順序與它們被創建的順序相反,也就是說writer 先被關閉,接著是zf。

    ?下面我們使用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?是JDBC4.1或更晚的API的一部分。

    注意:try-with-resources 也可以有catch和finally語句塊,就像使用一個普通的try語句一樣。在try-with-resources 語句中,catch或者finally將在資源被關閉后執行。

    from:https://blog.csdn.net/fireofjava/article/details/7220754?

    總結

    以上是生活随笔為你收集整理的java7新特性之Try-with-resources statement的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕一二 | 99爱爱| 亚洲免费在线视频观看 | 乱子伦视频在线看 | 91亚洲一线产区二线产区 | 欧美性受xxx黑人xyx性爽 | aaaa毛片 | 国产精品7777 | 91高潮大合集爽到抽搐 | 91禁在线观看 | 中国videosex高潮hd | 欧美在线观看视频一区 | mm131国产精品| 91深夜福利 | 爱就操| 国产高清在线视频观看 | 欧洲丰满少妇做爰 | 国产精品久久久久久一区二区 | 日日操夜夜操天天操 | 真人一毛片 | 成人片黄网站久久久免费 | 福利视频在线免费观看 | 嫩草在线视频 | 国产美女在线观看 | 99精品一级欧美片免费播放 | www..com黄色| a级片日本 | 久婷婷| 色窝窝无码一区二区三区 | 熟女国产精品一区二区三 | 欧美另类z0z变态 | 91久久精品在线 | 91嫩草网| 69福利区| 免费观看黄色av | 午夜精品成人毛片非洲 | 蜜桃视频无码区在线观看 | 久久av秘一区二区三区 | 日韩精品h | 精品无码m3u8在线观看 | 成人熟女一区二区 | 99蜜桃臀久久久欧美精品网站 | www.久久.com| www操| 国av在线 | 国产3p在线播放 | 欧美一区二区三区在线观看视频 | 欧美综合视频在线 | 涩涩免费网站 | 日本69视频| 青青草午夜 | 乱亲女h秽乱长久久久 | 插插插日日日 | 人妻一区二区三 | 污污的视频在线免费观看 | 激情免费网站 | 伊人亚洲天堂 | 日韩aaa | 99re最新| 中文字幕人妻一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 欧美熟妇乱码在线一区 | 黄色国产在线视频 | 欧美粉嫩videosex极品 | 视频一区二区三区精品 | 亚洲剧情在线 | 美女交配 | 亚洲人和日本人hd | 六月色婷 | 视频在线观看你懂的 | 亚洲AV无码成人精品区在线观 | 日本视频网 | 无码一区二区三区免费 | 国产欧美日韩久久 | 欧美日韩综合网 | 成年人三级网站 | 午夜色网站 | 国产aaa| 可以在线观看的av | 日本美女黄视频 | 成人www| 免费观看日批视频 | 六月丁香激情综合 | 日本aⅴ视频 | 午夜视频欧美 | 91叉叉叉| 99久草| 电影寂寞少女免费观看 | 成人在线观看免费 | 在线播放第一页 | 亚洲女人18毛片水真多 | 日本三级黄在线观看 | 韩国成年人网站 | 黄页视频在线观看 | 日韩欧美国产一区二区在线观看 | 国产精品无码久久久久成人app | 97se亚洲国产综合在线 | 九九九在线视频 | 欧美特级一级片 |