当前位置 > it书童 > java > 正文

java9增强的自动关闭资源

java it书童 2020-11-28 10:57:46 0赞 0踩 215阅读 0评论

异常处理流程代码可以放在任何能放可执行性代码的地方,因此完整的异常处理流程既可放在try块里,也可放在catch块里,还可放在finally块里

异常处理嵌套的深度没有很明确的限制,但通常没有必要使用超过两层的嵌套异常处理,层次太深的嵌套异常处理没有太大必要,而且导致程序可读性降低

既然物理资源必须关闭,总是人工调用显得代码很臃肿,如果能自动关闭资源就完美了

Java 9 允许将放到 try 后括号内的资源自动关闭,只要该资源有 final 资源或者是有效 final (effectively final)

public class AutoClose {
    public static void main(String[] args) throws FileNotFoundException {
        // 有 final 显示修饰的资源
        final BufferedReader br = new BufferedReader(new FileReader("AutoClose.java"));
        // 虽然没有用 final 修饰,但只要不对该变量重新赋值,就是有效 final
        PrintStream ps = new PrintStream(new FileOutputStream("a.txt"));
        // 只要将资源放到 try 后的括号即可自动关闭资源
        try (br; ps) {
            System.out.println(br.readLine());
            ps.println("仰天大笑出门去");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

源码 javaDemo 8503b7d

关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/902