编程语言
首页 > 编程语言> > java-谁决定抑制哪些异常?

java-谁决定抑制哪些异常?

作者:互联网

据我了解,Java 7的抑制异常功能是自动的.换句话说,过去在6中的finally块中发生的异常被自动抑制,以支持在资源分配时发生的异常.

因此,在此示例中,a)打开资源和b)关闭资源或c)可能都出错.

据我了解,Java 7将引发在打开时发生的异常,我们可以要求将异常排除在其他地方.

    try (BufferedReader inputReader = Files
            .newBufferedReader(Paths.get(new URI(
                    "file:///Users/me/Desktop/readme.txt")), Charset
                    .defaultCharset())) {
        String inputLine;
        while ((inputLine = inputReader.readLine()) != null) {
            System.out.println(inputLine);
        }
    } 

问题是..程序员可以决定压抑什么吗?毕竟,公共addSuppressed()在那里.

请提供示例和用例.

解决方法:

这不是任意的-被抑制的异常是那些将掩盖导致try块失败的主要异常的异常-就是finally块中的异常.此功能可确保您获得整个构造中引发的所有异常,但是捕获到的异常将是更重要的异常.

您不必选择被压抑的东西.该方法肯定存在,否则整个过程将无法正常进行.如果愿意,您可以编写自己的异常处理代码并随意使用addSuppressed.

标签:exception,java-7,java
来源: https://codeday.me/bug/20191101/1980757.html