我不知道如何说我已经使用Java 4年了,而且我第一次遇到这个参数enableSuppression
有人可以解释它做什么以及何时启用/禁用它?
答案 0 :(得分:4)
enableSuppression
是Throwable
的构造函数中的参数(包括Exception
)
确定是否启用抑制。
来自Javadocs:
除非通过构造函数禁用,否则启用抑制行为。
请注意,当一个异常导致另一个异常时,第一个异常 通常会捕获异常,然后抛出第二个异常 响应。换句话说,两者之间存在因果关系 例外。相比之下,有两个独立的情况 异常可以在兄弟代码块中抛出,特别是在 尝试使用try-with-resources语句和编译器生成的块 finally块关闭资源。在这些情况下,只有一个 抛出的异常可以传播。在try-with-resources中 声明,当有两个这样的例外时,例外 源自try块的传播和异常来自 finally块被添加到由...抑制的异常列表中 try块的异常。作为一个例外展开堆栈,它 可以累积多个被抑制的异常。
异常可能会抑制异常,同时也是由异常引起的 另一个例外。异常是否有原因是 在创建时在语义上已知,不管是否 异常将抑制通常只有的其他异常 在抛出异常后确定。
请注意,程序员编写的代码也能够利用 在有多个兄弟的情况下调用此方法 例外,只有一个可以传播。