gpt4 book ai didi

java - Java 中的抑制异常

转载 作者:行者123 更新时间:2023-11-30 07:58:33 24 4
gpt4 key购买 nike

考虑下面的例子。

    public static void main(String[] args) {

try{
throw new NullPointerException();
} finally{
throw new ClassCastException();
}

}

这只会抛出 ClassCastException 并抑制 NullPointerException。这在 Java SE6 中也是可能的。那么为什么只在 JavaSE7 中强调抑制异常。我在这里缺少什么?

最佳答案

How is it different from this? Isn't it just 2 exceptions thrown with the latest one suppressing the previous one.

您实际上正在做的事情最好描述为用另一个异常“替换”。 (或者更准确地说,丢弃第一个异常并无条件抛出第二个异常!)

异常抑制(正如 JLS 使用的术语)在以下方面有所不同:

  1. 只有在 try-with-resources 中抛出的异常才会(自动)发生正常抑制> try-with-resources。你在你的例子中所做的事情发生在任何/所有异常上,无论它们的来源如何。

  2. 通过正常抑制,次要异常被抑制。在这种情况下,主要异常被“抑制”。

  3. 正常抑制,被抑制的异常记录在原始异常中。在您的示例中,它被丢弃。


诚然,现在您可以以其他方式手动使用Throwable.addSuppressedException(...) 方法。我正在描述它是如何打算使用的。

关于java - Java 中的抑制异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354790/

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