有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java仅仅关闭一个流并重置一个CharsetDecoder就值得捕获一个异常吗?

我的理解是,建议使用Java关闭流,但甚至不能接近“需求”。同样,在使用完CharsetDecoder后,重置它也是一个好主意,但也不符合要求

抛出异常使方法看起来干净且可读性很强。捕获异常可能是“推荐的”,但它会给方法增加一些混乱。那么,在专业编程团队中,您真的会“捕捉并关闭/重置”吗?有那么重要吗?在这里,我宁愿扔它:

<!-- language: Java -->
    public static String[] grabData(URL url, CharsetDecoder dcdr) throws Exception {  

        List<String> dump = new ArrayList<String>();
        dcdr.reset();

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        BufferedReader bufrdr = new BufferedReader(new InputStreamReader(conn.getInputStream(), dcdr));
        while (dump.add(bufrdr.readLine())) { }

        bufrdr.close();
        dcdr.reset();

        return dump.toArray(new String[0]);
    }

共 (2) 个答案

  1. # 1 楼答案

    开放流可能会累积并最终耗尽操作系统资源。其他资源也是如此,这在长时间运行的程序中可能非常关键。因此,养成一个非常好的习惯

  2. # 2 楼答案

    你的理解是错误的。确实需要关闭开放流,因为它们获取的本机OS资源在对象超出范围时不会被释放

    至于抛出异常,必须有人捕获并处理它。而且您应该决不抛出Exception像这样抛出可能发生的特定异常类型