gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:21:36 26 4
gpt4 key购买 nike

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

因此,在此示例中,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);
}
}

问题是.. 程序员可以决定什么被抑制吗?毕竟,public addSuppressed() 就在那里。

请提供示例和用例。

最佳答案

这不是任意的——被抑制的异常是那些会掩盖导致 try block 失败的主要异常的异常——而这就是 finally 中的异常堵塞。此功能可确保您获得整个构造中抛出的所有异常,但您捕获的异常将是更重要的异常。

您无法选择被抑制的内容。方法肯定是有的,不然整个事情就不行了。如果愿意,您可以编写自己的异常处理代码并随意使用 addSuppressed

关于java - 谁决定抑制哪些异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com