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