zoukankan      html  css  js  c++  java
  • 《Effective Java》 读书笔记(九)使用try-with-resources 语句替代try-finally

    这一点其实深有感触。话不多说,先上代码:

        static String firstLineOfFile(String path) {
            BufferedReader bufferedReader = null;
            try {
                bufferedReader = new BufferedReader(new FileReader(path));
                return bufferedReader.readLine();
    
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != bufferedReader) {
                        bufferedReader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return "";
    
        }

    这是一个完整的读取一个文件的第一行字符的代码。

    核心其实就两句:

     bufferedReader = new BufferedReader(new FileReader(path));
     return bufferedReader.readLine();

    但是为了能够正确的关闭各种资源,代码变得异常冗长。

    在Java 7引入try-with-resources之后,所有的问题便得到了解决:

    当一个资源类实现了AutoCloseable的时候,我们可以使用try-with-resource自动管理资源

    先看代码:

        static String firstLineOfFileNew(String path) {
            try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
                return bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "";
        }

    这种版本比原始的版本精简的多,而且try-with-resource对close方法进行了异常抑制:当对外部资源进行处理(例如读或写)时,如果遭遇了异常,且在随后的关闭外部资源过程中,又遭遇了异常,那么你catch到的将会是对外部资源进行处理时遭遇的异常,关闭资源时遭遇的异常将被“抑制”但不是丢弃,通过异常的getSuppressed方法,可以提取出被抑制的异常。这样能够让开发者更快的定位到异常

  • 相关阅读:
    Opportunities
    去考試6/16
    WP数据绑定 GIS
    wp 之path详细 以及一个关于LinearGradientBrush 的动画 GIS
    windows phone 多触控画图并保存到 手机图片库 GIS
    windwos phone 的多任务 GIS
    导航基础 GIS
    Windows Phone 7 页面旋转动画 GIS
    一个小范围 滑动的动画 GIS
    wp 的手势Gestures: flick, pan, and stretch GIS
  • 原文地址:https://www.cnblogs.com/dengchengchao/p/9049828.html
Copyright © 2011-2022 走看看