• 【sonar-block】Use try-with-resources or close this "BufferedInputStream" in a "finally" clause.


    自己的理解:

    try-with-resources是JDK7的新语法结构,主要功能是自动关闭资源而不需要在finally里面手动close()关闭,

    而且最重要的是,try块中的异常不会被close()引起的异常压制——因为不需要写close()了,系统自动帮你完成——前提是实现了AutoCloseable或Closeable接口的类或接口。

    Throwable.getSuppressed方法来获取被抑制的异常。

    -----------------------------------------------------------------------------------------------------------------

    通俗易懂的介绍:

      JDK7以前如果rd.readLine()(try语句块)与rd.close()(在finally块中)都抛出异常,

    则只会抛出finally块中的异常,不会抛出rd.readLine()中的异常。这样经常会导致得到的异常信息不是调用程序想要得到的。

      JDK7及以后版本中如果采用try-with-resource机制,

    如果在try-with-resource声明中抛出异常(可能是文件无法打或都文件无法关闭)同时rd.readLine()也抛出异常,则只会抛出rd.readLine()的异常。

      在JDK7中只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用try-with-resource来实现异常处理和资源关闭。

    但是注意异常抛出顺序。在Java se 7中的try-with-resource机制中异常的抛出顺序与Java se 7以前的版本有一点不一样,是先声明的资源后关闭。

    来源自:https://blog.csdn.net/fanxiaobin577328725/article/details/53067163#commentBox

    ----------------------------------------------------------------------------------------------------------------------------------

    还可以参考:

    https://blog.csdn.net/fw0124/article/details/49946975

    最后的例子可以自己多运行几遍就能完全理解了。

    ----------------------------------------------------------------------------------------------------------------------------------

    如果读懂了上面两篇博客,再阅读这篇文章

    https://blog.csdn.net/skyupward/article/details/60154461

    ,应该就能一目十行触类旁通了。

  • 相关阅读:
    PHP中curl_init和file_get_contents配合使用
    在PHP语言中使用JSON
    网页中获取IFrame内容
    Golden Gate
    windows 7某些中文程序乱码
    Oracle的同义词(synonyms)总结
    VERITAS容灾技术方案
    VERITAS 备份及容灾方案建议书
    1 FAST ESP 简介
    Linux文件查找命令find,xargs详述
  • 原文地址:https://www.cnblogs.com/whoknows1/p/9786628.html
Copyright © 2020-2023  润新知