zoukankan      html  css  js  c++  java
  • java使用resource时,使用try-with-resources代替try-catch-finally

    try-with-resources是jdk1.7加入的机制,可以保证资源使用后正常关闭,并使代码更加简洁。

    try-catch-finally使用实例:

    public void handle(String fileName) {
        BufferedReader reader = null;
        try {
            String line;
            reader = new BufferedReader(new FileReader(fileName));
            while ((line = reader.readLine()) != null) {
                ...
            }
        } catch (Exception e) {
            ...
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    ...
                }
            }
        }
    }

    可以看到为了保证resources正常关闭,finally中又使用if语句以及try-catch,增加了代码的复杂性。

    try-with-resources使用实例:

    public void handle(String fileName) {
        try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
            String line;
            while ((line = reader.readLine()) != null) {
                ...
            }
        } catch (Exception e) {
            ...
        }
    }

    可以看到,try-with-resources的比前一种方法明显节省了很多代码,资源在try后边的()中生成,在try结束后程序会自动关闭资源。

    如果需要声明多个资源,可以在try后面的()中,以;分隔;也就是说,try后边的()可以添加多行语句。

    try (BufferedReader reader1 = new BufferedReader(new FileReader(fileName1));
      BufferedReader reader2 = new BufferedReader(new FileReader(fileName2));) {
      ...
    } catch (Exception e) {
      ...
    }

    需要注意的是,try后边括号中声明的资源必须实现java.lang.AutoCloseable,如果声明没实现这个接口的变量,IDE会进行提示'The resource type File does not implement java.lang.AutoCloseable'。

    比如我在里面声明了一个File类型的变量:

    参考:

    1.教你消灭 Java 代码的“坏味道” : https://mp.weixin.qq.com/s/rGXb_weYLVu0xQ2NmarBlQ

    2.Java – Try with Resources : https://www.baeldung.com/java-try-with-resources

  • 相关阅读:
    Sherlock and Squares
    [leetcode] Super Ugly Number
    [leetcode] Ugly Number II
    [leetcode] Ugly Number
    [leetcode] Burst Balloons
    菜根谭#268
    菜根谭#267
    菜根谭#266
    菜根谭#265
    菜根谭#264
  • 原文地址:https://www.cnblogs.com/xhj123/p/12578419.html
Copyright © 2011-2022 走看看